Problem: [GXYCTF 2019]BabySqli

输入admin1密码123发现提wrong user!,输入admin密码123,提示wrong pass!。说明用户名就是admin。
bp抓包看一下

给出了一串编码,放进随波逐流里看一下,发现是个base32

然后继续解码,竟然给出了sql查询语句

从给出了sql语句中知道,注入点在name中
现在判断注入类型,发现是字符型

并使用--+注释,然后使用order by 判断字段数,发现给出提示“do not hack me!”应该被过滤了尝试一下order首字母大写发现可以绕过。
字段数为3。

现在就需要判断admin在哪一个字段了。经过测试发现在第二字段

联合查询所查询的数据不存在时,联合查询会构造一个虚拟的数据

那么就可以使用这个特性来获取flag。
name=1' union select 1,'admin','c4ca4238a0b923820dcc509a6f75849b'--+&pw=1
# c4ca4238a0b923820dcc509a6f75849b是1的md5
总结
联合查询所查询的数据不存在时,联合查询会构造一个虚拟的数据
