[BJDCTF2020]Easy MD5

[BJDCTF2020]Easy MD5

打开题目之后,就只有这一个输入框,毫无头绪,试着注入什么各种操作,都没有用

试着抓包看看,看到响应头里有

[BJDCTF2020]Easy MD5

这是mysql查询语句,所以我们要从这里入手

首先我们要知道md5($pass,true)的意思

[BJDCTF2020]Easy MD5
不懂可以看这篇文章https://www.jianshu.com/p/12125291f50d

所以我们要找到md5后有 ‘or’的字符串,以便让查询语句恒成立
md5函数在指定了true的时候,是返回的原始 16 字符二进制格式。也就是说会返回这样子的字符串:'or’6\xc9]\x99\xe9!r,\xf9\xedb\x1c

通过脚本可以找到这样一个字符串

ffifdyop

那为什么可以恒成立?

因为弱比较 字母和数字混合的字符串会转化为字符串前面的数字,所以数字都是除0都是true,所以恒成立

这样我们就登进去了

查看源代码

[BJDCTF2020]Easy MD5

发现一个很简单的md5的弱比较

涉及到常规的md5 oe绕过

s155964671a
s214587387a
他们md5后都是以oe开头,在php弱比较过程中是判断为相等的

再进去又是一个md的强比较

[BJDCTF2020]Easy MD5

这个只要md5数组绕过就可以

当数组md5后会报错,但是会判断相等

param1[]=1&param2[]=2

flag就爆出了

上一篇:[BJDCTF2020]EzPHP-POP链


下一篇:贝索斯正式卸任亚马逊CEO