[SWPUCTF 2021 新生赛]easy_md5

NSS平台链接:NSSCTF | 在线CTF平台

题目:

<?php 
 highlight_file(__FILE__);
 include 'flag2.php';
 
if (isset($_GET['name']) && isset($_POST['password'])){
    $name = $_GET['name'];
    $password = $_POST['password'];
    if ($name != $password && md5($name) == md5($password)){
        echo $flag;
    }
    else {
        echo "wrong!";
    }
 
}
else {
    echo 'wrong!';
}
?> 

这道题是一道php代码审计题,读代码我们可以知道我们需要满足以下条件:
1.get传一个name参数,post传一个password参数

2.get传的参数值不能和post传的参数值一样

3.name的md5参数值要和password的md5参数值弱相等

我们先来了解下强比较和弱比较,这里借鉴某位大佬的博客:php比较绕过(强比较“===”/弱比较“==“)-CSDN博客

了解了强比较和弱比较后,我们再来了解一下MD5的强弱类型比较,这里依旧借鉴某位大佬的博客:MD5绕过(强弱类型比较)_md5弱比较_陈wonton的博客-CSDN博客

ok,我们了解到一些字符串md5值以0e开头:

QNKCDZO
240610708
s878926199a
s155964671a
s21587387a

很明显这几个值本身是不一样的,但是进行md5弱比较的时候就相等了,满足题目要求,于是我们任从其中选两个,一个作为name一个作为 password

使用hackbar进行传参:

成功打印出flag:

总结:本题主要考查我们get,post传参以及md5弱比较绕过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值