知识点: 1. 弱口令
2. md5加解密 base64加解密 base32加解密
开局进入到这个页面开始sql注入习惯性的输入admin 和 123
得到一个密码错误,说明账户名是正确的,由于我比较懒所以用fuzz去扫了一下都有什么被过滤了
结果发现万能密码 or 被过滤掉了 等于号也被过滤了 就连括号也被过滤掉了
那就只能另外想办法了~
抓个包试试吧~
发现了奇奇怪怪的东西,看样子像base32编码,那就解码一下
MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5
解出来是
c2VsZWN0ICogZnJvbSB1c2VyIHdoZXJlIHVzZXJuYW1lID0gJyRuYW1lJw==
看样子是base64的编码,在解码
select * from user where username = '$name'
那么注入点应该就是$name了.
之后判断注入类型
是字符型
之后猜测
select * from user where username = '$name' 这个语句应该是从user表中选出username 和 password ,然后将选出的password 和 我们输入的password 进行比较,如果password 相等则登陆成功
那么我们就来判断他的columns吧
是存在3个column
之后判断username在哪个字段
之后我们去看源码
if($arr[1] == "admin"){
if(md5($password) == $arr[2]){
echo $flag;
}
else{
die("wrong pass!");
}
}
意思就是我们输入的password 被md5加密了和我们从数据库取出的password 进行比较如果相等则输出flag值
所以我们只要输入的password的md5值等于我们自己伪造的md5值就可以了
可以在这里进行md5加密https://www.sojson.com/md5/
之后我么来构造payload
出现flag值,游戏结束~