2021-06-06

bugku 2021/6/6
web16
三个点:
1.文件备份 御剑扫描发现index.php.bak备份文件打开下载发现源代码
2.双写绕过
3.MD5加密绕过两种方法
F(1)md5()无法处理数组,如果传入的为数组,会返回NULL,所以两个数组经过加密后得到的都是NULL,也就是相等的。(kekeyy1[]=1&kekeyy2[]=2)
F(2)如果两个字符经MD5加密后的值为 0exxxxx形式,就会被认为是科学计数法,且表示的是0*10的xxxx次方,还是零,都是相等的。
代码如下

<?php
/**
 * Created by PhpStorm.
 * User: Norse
 * Date: 2017/8/6
 * Time: 20:22
*/
include_once "flag.php";//包含文件flag.php
ini_set("display_errors", 0);//配置选项
$str = strstr($_SERVER['REQUEST_URI'], '?');
//$_SERVER['REQUEST_URI']获取url除去host部分如www.baidu.com/?a=index.php变成?a=index.php
//strstr查找字符串?如果有输出?和后面部分
$str = substr($str,1);
//从第一个位置截取字符串str
$str = str_replace('key','',$str);
//查找str中的key并把key置空,由于只执行一遍因此可以双写绕过
parse_str($str);
//将变量实例化如key1=1,key2=2中key1和key2的值给下面的变量
echo md5($key1);//输出key1的MD5

echo md5($key2);//输出key2的MD5
if(md5($key1) == md5($key2) && $key1 !== $key2){//这就需要找两个md5相同但值不同的字符串如:QNKCDZO和240610708
    echo $flag.
}
?>

//代码注释参见博客https://blog.csdn.net/m0_49762339/article/details/111640256

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值