小白学习记录
打开题目看到给了一个input输入框提交个参数发现是赋值给password输入了许多参数都没有变化,这个时候我们可以试试从其他地方下手,比如看网页源码和网络请求或者用bp抓个包看看
发现了sql语句,关键的地方在于md5($pass,true)这里意思是我们传入参数会转为MD5的16字符二进制格式
我们需要一个编码后为‘or’1xxxxxx这样的数,or后面要是0除外的数字,这样就是一个永真的参数,ffifdyop就是我们要找的参数
提交后跳转到另一个网页F12看到要两个参数不同,但是MD5值相同
方法一:数组绕过md5()函数计算的是一个字符串的哈希值,对于数组则返回false
payload:a[]=1&b[]=2
方法二:科学计数法绕过,因为QNKCDZO和240610708 MD5都是0e开头的字符串,== 是比较松散的比较,它只比对数值不比对类型,比如 1a 和 1b 在php弱类型比较中是相同的,因为它俩在做比较的时候1a和1b会被怕判断成数字比较,所以就成了1和1做比较,自然就相同了
payload:?a=QNKCDZO&b=240610708
上面的方法绕过后还有一个网页
代码的逻辑是一样的,但是这里换成了===变成强比较了,就不能用方法二的方式绕过了,但是方法一可以继续绕过
flag就出来了