跳转至

cat_log

1.题目

同学发给我一个网址https://x.x.x.x/?md5=9c80d2bb0bccfefeb3750744c0760496&applicant=admin&filename=web.log,说让我帮忙看看网站运行日志,同学说这是他写的一个非常安全方便的文件查看器。
真的安全吗?
<?php
error_reporting(0);
$secret=getenv("SECRETKEY"); # For security reasons, the key length is greater than 8.

if(isset($_GET["md5"]) && isset($_GET["applicant"]) && isset($_GET["filename"])){
    if($_GET["md5"] === md5($secret.$_GET["applicant"].$_GET["filename"])){
        $file_contents = file_get_contents($_GET["filename"]);
        echo $file_contents;
    }else{
        die("My tool is safe.");
    }
}else{
    highlight_file(__FILE__);
}

2.思路

md5长度扩展攻击(https://zh.wikipedia.org/wiki/长度扩展攻击

从题目中已知md5($secret."admin"."web.log")=9c80d2bb0bccfefeb3750744c0760496,

利用hashpump工具进行长度扩展攻击:

密钥长度需要自己爆破,是15位

构造payload:

?md5=aef8eab11f5ce7a692cf1d6cfc889278&applicant=adminweb.log%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%d8%00%00%00%00%00%00%00&filename=flag