[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知识点


当查询的数据不存在的时候,联合查询就会构造一个虚拟的数据。

先可以看到该表只有一个用户

img

然后我们可以用联合查询的方式将查询的数据插入到表中

img

通过这样的方式,我们就可以用构造payload

用户名输入(‘e10adc3949ba59abbe56e057f20f883e’是 123456的md5值)

1' union select 1,'admin','e10adc3949ba59abbe56e057f20f883e'#

密码输入

123456

传包成功

posted on 2021-01-13 14:11  猪猪侠的哥哥  阅读(110)  评论(0)    收藏  举报