BUGKU-备份是个好习惯

http://123.206.87.240:8002/web16/

打开页面之后发现是这个样子,查看源码也没啥好东西。
在这里插入图片描述题目叫做“备份是个好习惯”,试着扫一下目录。
在这里插入图片描述.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); 
parse_str($str);
echo md5($key1);

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

这段代码大概意思是:首先获取当前的uri,接着把uri中“?”以及“?”之后的字符串赋值给变量,然后再删掉“?”再赋值给变量,如果字符串中含有“key”,将key替换为空.再将字符串解析到变量中,再比较key1.key2的md5值。
解析流程:
url:http://123.206.87.240:8002/web16/?key1=xxx&key2=xxx
获取uri,也就是获取域名后面的东西/web16/?key1=xxx&key2=xxx
获取?key1=xxx&key2=xxx
获取key1=xxx&key2=xxx
再通过parse_str函数,url参数key1,key2变为变量$ key1,$key2

$str = str_replace(‘key’,’’, $str) 【正常传参的话,key会被置换为空,通过构造kkeyey来绕过】
想要获得flag,需同时满足key1.key2的md5值相等且key1的值等于key2的值。
绕过方式:
1.md5无法对数组进行构造,传参为数组返回null,满足条件。
http://123.206.87.240:8002/web16/?kkeyey1[]=xxx&kkeyey2[]=ccc
在这里插入图片描述

2.利用php弱类型GETFLAG
http://123.206.87.240:8002/web16/?kkeyey1=240610708&kkeyey2=QNKCDZO
240610708 md5加密:0e462097431906509019562988736854
QNKCDZO md5加密:0e830400451993494058024219903391
0e在比较的时候会将其视作为科学计数法,所以无论0e后面是什么,0的多少次方还是0

php弱类型详解参考博客:https://www.cnblogs.com/Mrsm1th/p/6745532.html

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值