[GXYCTF2019]BabySQli
习惯性查看源代码,发现一段长码
MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5
通过base32+base64解码得到sql语句
select * from user where username = '$name'
于是,bp拦包,找注入点,尝试user=admin&pass=123
提示为wrong pass
,说明有admin这个user的
尝试order by,查询字段数,结果出现hack提示,试着大小写绕过,成功了
然后order by到4出错,所以有三个字段
猜测这三个字段可能是编号或ip之类的,然后user和password。user框输入' union select 1,'admin',3#不报错,证明第二个字段确实是user,那么猜测第三个字段是password,看来还是用md5加密过的
于是涉及到了一个sql知识点
当查询的数据不存在的时候,联合查询就会构造一个虚拟的数据。
先可以看到该表只有一个用户
然后我们可以用联合查询的方式将查询的数据插入到表中
通过这样的方式,我们就可以用构造payload
用户名输入(‘e10adc3949ba59abbe56e057f20f883e’是 123456的md5值)
1' union select 1,'admin','e10adc3949ba59abbe56e057f20f883e'#
密码输入
123456
传包成功