侧边栏壁纸
  • 累计撰写 19 篇文章
  • 累计收到 4 条评论
CTF

MD5扩展攻击

eson
2024-03-12 / 2 评论 / 442 阅读 / 正在检测是否收录...

工具下载

个人感觉hash-ext-attackHashPump好用,并且支持库安装也比较方便,直接pip install -r requirements.txt就可以了,下载地址:https://pan.quark.cn/s/367f838460c4

题目

<?php
error_reporting(0);

$key = getKey();
$username = $_POST['username'];
$data = $_POST['data'];
$sign = $_COOKIE["sign"];
if (!empty($sign)) {
    if ($username === "jwt") {
        if ($sign === md5($key . $username . $data)) {
            if (strpos($data, 'sec')) {
                $flag = file_get_contents('/flag');
                echo $flag;
            } else echo "数据似乎没有被恶意篡改,但服务器接收到的数据中不包含sec";
        } else echo "检测到当前用户的数据被恶意篡改";
    } else echo "看起来你并不是用户jwt";
} else echo "检测到sign为空, 可能需要刷新一下浏览器";
?>          

解题思路

1、根据题目可知,$key."jwt"."data" 的md5是 5a18d02b1f8da8d5f70a4cba720dfafd ,并且key的长度是17

2、那么已知明文就是jwtdata,已知key长度就是17,已知md5就是 5a18d02b1f8da8d5f70a4cba720dfafd

3、并且data数据要包含sec,那么使用工具开始攻击

4、开始传参,这里有个需要注意的地方,因为$sign === md5($key . $username . $data) ,而username我们已经传参jwt,所以data传参的时候要把前面的jwt去掉

2

评论 (2)

取消
  1. 头像
    111
    Windows 10 · Google Chrome

    1、根据题目可知,$key."jwt"."data" 的md5是 5a18d02b1f8da8d5f70a4cba720dfafd ,并且key的长度是17 这个是怎么判断的呀?

    回复
    1. 头像
      eson 作者
      Windows 10 · Google Chrome
      @ 111

      题目右侧写的有已知秘钥长度为17,并且提示已知初始数据为data ,再加上 $username === "jwt"的判断,和$sign == md5($key. $username . $data)这个判断,得出的结论。

      回复