[MRCTF2020]套娃

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

[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抓包传参在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值