【学习笔记 20】buu [BJDCTF2020]Easy MD5

知识点

password='".md5($pass,true)."'

解题

 
360截图17290429273651.PNG
 
360截图17891228296729.PNG

这里可以看到是通过get参数进行传参,但是这里也没有其他的提示,尝试传统的抓包,等分析没有得到有用信息,查看大佬wp,知道了其中调用了这样的函数

password='".md5($pass,true)."'

就是将你输入的命令进行MD5加密后在输出,接下就根据大佬给的提示查询ffifdyop,这里是因为ffifdyop 这个字符串被 md5 哈希了之后会变成 276f722736c95d99e921722cf9ed621c,这个字符串前几位刚好是 ‘ or ‘6,而 Mysql 刚好又会吧 hex 转成 ascii 解释,因此拼接之后的形式是1select * from 'admin' where password='' or '6xxxxx'(大佬是真的强)。

查询抓包

 
360截图17571114383442.PNG


可以看到这里提示让我们去看一下levels91.php,直接在burp里修改

 
360截图18141222484895.PNG

可以看到如下要求,让我们在该页面下利用get传a,b两个参数,并且还有两个判断a不等于b,a的MD5值是否等于b的MD5值,那么接下来就可以利用此来构造payload

?a[]=1&b[]=2
 
360截图16570201113944.PNG

得到想要的结果访问提示的levell14.php界面

扫描二维码关注公众号,回复: 11489334 查看本文章
<?php
error_reporting(0);
include "flag.php";//包含了flag.php,那么flag必然在这里

highlight_file(__FILE__);

if($_POST['param1']!==$_POST['param2']&&md5($_POST['param1'])===md5($_POST['param2'])){
echo $flag;//如果post传的两个参数param1和param2的值不同并且MD5值相同就执行flag(MD5绕过就是利用了0E开头的MD5值的混淆绕过)
}

那么就可以构造payload

param1[]=1&param2[]=2

最终利用hackbar得到flag

 
360截图16560317447961.PNG

猜你喜欢

转载自blog.csdn.net/weixin_43553654/article/details/107686880