buuctf [GXYCTF2019]BabySQli

buuctf [GXYCTF2019]BabySQli
常规sql注入都行不通,查看源码发现一个search.php,
buuctf [GXYCTF2019]BabySQli
先说说base32 和 base64 的区别,
base32 只有大写字母和数字数字组成,或者后面有三个等号。
base64 只有大写字母和数字,小写字母组成,后面一般是两个等号。
明显,那段文字是base32加密
解密后:c2VsZWN0ICogZnJvbSB1c2VyIHdoZXJlIHVzZXJuYW1lID0gJyRuYW1lJw==

继续base64解密:select * from user where username = '$name'
sql查询语句
注入的时候可以发现会回显no user 或 no pass
我们输入admin 发现 是 no pass 输入其他的时候发现是 no user
很明显绝对存在admin这个账号,联合查询到了三个字段。做到这没思路了
看了web,学到了联合注入有个技巧
在联合查询并不存在的数据时,联合查询就会构造一个虚拟的数据。
举个例子
buuctf [GXYCTF2019]BabySQli
这是数据库里本有的账号和密码,我们用联合查询这个技巧来看看
buuctf [GXYCTF2019]BabySQli
执行后
buuctf [GXYCTF2019]BabySQli
发现多了个账户,欧克开始解题
通过判断可以发现2字段是用户,3字段才是密码
构造playload:name=1' union select 0,'admin','81dc9bdb52d04dc20036dbd8313ed055'%23&pw=1234

buuctf [GXYCTF2019]BabySQli
利用构造一个虚拟身份来进行伪造真实身份,从而绕过审核机制。