[GXYCTF2019]BabySQli
1.打开网站,就一登录框:
2.随便弱口令登一下,放burp里面方便一些:
3.发现了一段字符串,看着这纯大写+数字,就猜是base32:
4.带两等号,应该就直接是base64了:
5.万能密码试一下(这里or被拦截,大小写绕过,等号被拦截可以<>或者like或者其他的函数绕过):
发现还是密码错误。这种题我做过,后端逻辑也就是这样:先取出一组数据,拿出其中键为username的值,如果为空或者不是admin,就报错。假如等于admin就继续往下。下面就是用取出来的password键值去和我们输入的密码做对比,一般放进数据库里是加密了的。如果相等,就成功登陆。
大概的代码逻辑就是这样:
$data = 检索数据。
if ($data['username'] === 'admin') {
if ($data['password'] === md5($pw)) {
return true;
}
}
6.那么我们就要操纵检索出来的数据。payload:
name=a'+union+select+0,'admin','202cb962ac59075b964b07152d234b70'%23&pw=123
这时候检索出来的账号密码都是我们控制的。
字段一般都是id、username、password这种顺序,一猜就出来了。
加密方式mysql、mysql5、md5三种试一试。