[BJDCTF2020]Easy MD5

[BJDCTF2020]Easy MD5

页面很干净,随便输入值,没有反应,利用burp抓包

看到有Hinit的提示,可以看出是md5+sql注入的方式,立刻想到ffifdyop

可以参考:

https://sculptor-liu.github.io/2020/08/27/MD5%E7%BB%95%E8%BF%87/

ffifdyop提交查询,可以看到调转了页面

可以看到源码中的提示

1
2
3
4
5
6
7
8
<!--
$a = $GET['a'];
$b = $_GET['b'];

if($a != $b && md5($a) == md5($b)){
// wow, glzjin wants a girl friend.
-->
意思就是get方式传两个不同值的参数a和b,同时满足它们的md5值要相等

方法一:

a=s1885207154a b=s1836677006a

两个字符串的md5值返现的都是0e开头,在php中0e会被当做科学计数法,就算后面有字母,其结果也是0,所以上面的if判断结果使true,成功绕过!

方法二:

数组绕过。原理是md5等函数不能处理数组,导致函数返回Null。而Null是等于Null的,导致了绕过。看下面的示例,是返回了yes的。(题目中就传入 ?a[]=1&b[]=2 )

又来到一个新页面,这里和上面的不同就是用了===。这里就不存在上面的第一种绕过了,但是依然可以用第二种方法绕过,数组绕过param1[]=1&param2[]=2