[BJDCTF2020]Easy MD5
打开题目之后,就只有这一个输入框,毫无头绪,试着注入什么各种操作,都没有用
试着抓包看看,看到响应头里有
这是mysql查询语句,所以我们要从这里入手
首先我们要知道md5($pass,true)的意思
不懂可以看这篇文章https://www.jianshu.com/p/12125291f50d
所以我们要找到md5后有 ‘or’的字符串,以便让查询语句恒成立
md5函数在指定了true的时候,是返回的原始 16 字符二进制格式。也就是说会返回这样子的字符串:'or’6\xc9]\x99\xe9!r,\xf9\xedb\x1c
通过脚本可以找到这样一个字符串
ffifdyop
那为什么可以恒成立?
因为弱比较 字母和数字混合的字符串会转化为字符串前面的数字,所以数字都是除0都是true,所以恒成立
这样我们就登进去了
查看源代码
发现一个很简单的md5的弱比较
涉及到常规的md5 oe绕过
s155964671a
s214587387a
他们md5后都是以oe开头,在php弱比较过程中是判断为相等的
再进去又是一个md的强比较
这个只要md5数组绕过就可以
当数组md5后会报错,但是会判断相等
param1[]=1¶m2[]=2
flag就爆出了