[MRCTF2020]套娃
今天又是刷题的一天,加油哇
F12查看源码
意思是上述代码不能出现’_‘和’%5f’,可以用‘ ’或‘.’或‘ %5F’绕过
通过get取得的参数b_u_p_t不等于23333但是正则,匹配需要匹配到23333所以这里用%0a(因为正则匹配中’^‘和’$'代表的是行的开头和结尾,所以能利用换行绕过)绕过传入payload:?b u p t=23333%0a
访问页面,
源码里有一堆东西,之前做过这个,直接把它复制到控制台
意思是要传一个参数名为Merak的POST值。随意传一个试一下
爆出源码,审计一下1.需要IP地址为127.0.0.1 在header中加client-ip:127.0.0.1
2.file_get_contents用php伪协议绕过
2333=php://input
post:todat is a happy day
3.change函数的作用,传入的参数先进行base64解码,然后将字符转化成ASCII并且+$i*2
反写change函数,exp:
<?php
function unchange($v){
$re = '';
for($i=0;$i<strlen($v);$i++){
$re .= chr ( ord ($v[$i]) - $i*2 );
}
return $re;
}
$real_flag = unchange('flag.php');
echo base64_encode($real_flag);
?>
得到ZmpdYSZmXGI=
burp suite抓包传参

本文详细介绍了MRCTF2020中一个套娃挑战的解决过程,包括利用正则绕过、PHP伪协议以及反向构造函数来获取真实flag。主要涉及了HTTP参数篡改、源码审计和PHP编码解码技巧。通过设置特定的HTTP头信息、利用file_get_contents的php://input伪协议以及理解change函数的内部逻辑,成功完成挑战并获得Base64编码的flag。
3288

被折叠的 条评论
为什么被折叠?



