[新手入门] Bugku-备份是个好习惯

[复制链接]
查看5849 | 回复0 | 2020-2-9 21:01:01 | 显示全部楼层 |阅读模式
1.根据提示“备份”
那就查看备份文件(备份文件后缀为.bak)
<?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);//在已经提取到的字符串中的'key'替换为' '
parse_str($str);//将字符串解析到变量中
echo md5($key1);

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


2.因为原来的字符串key会被替换为“ ”,所以必须构造一个被替换后字符串还是为key的字符串
kkeyey1和kkeyey2符合条件

3.题目要求key1和key2的值不相同但是MD5值要相同
存在两种方法:
(1)因为MD5无法处理数组,所以传入数组时都会返回NULL,MD5值相同;
(2)如果两个字符经MD5加密后的值为 0exxxxx形式,就会被认为是科学计数法,且表示的是0*10的xxxx次方,还是零,都是相等的。
下列的字符串的MD5值都是0e开头的:
QNKCDZO
240610708
s878926199a
s155964671a
s214587387a
s214587387a



QQ图片20200209205236.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

27

主题

27

帖子

147

积分

小有名气

Rank: 3Rank: 3

积分
147