[GXYCTF2019]BabySQli1
看到题 为登录界面,且考察sql注入。每回对应sql登录,因尝试一下弱口令登录’or’1=1
发现有过滤 大致过滤 or and ()等
在报错后发现响应头有注释:
在这里声明一下base32与base64区别
base32 只有大写字母和数字数字组成,或者后面有三个等号。
base64 只有大写字母和数字,小写字母组成,后面一般是两个等号。
明显,那段文字是base32加密。
解密后:select * from user where username = '$name'
尝试name注入点时,一直显示wrong pass!
查看大佬wp
发现一般的密码都会md5加密进行判断,并利用联合注入特性。
if($row['password']===md5($passwd)){
}
在使用联合注入时,如果你查询的数据不存在,那么就会生成一个内容为null的虚拟数据,在联合查询并不存在的数据时,联合查询就会构造一个虚拟的数据。所以这时我们就可以在注入时添加我们需要的信息来完成我们的目的。
一般存放密码表字段 id ,username ,password
构造playload如下:
name=-1' union select 1,'admin','eccbc87e4b5ce2fe28308fd9f2a7baf3'%23&pw=3