【学习笔记 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界面

<?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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值