ctf show web入门123

这是一道典型的 PHP 代码审计与绕过题。核心目标是通过构造特殊的 POST 和 GET 请求,绕过极其严格的正则表达式与长度限制,最终执行代码并输出 $flag。

本来是要通过echo flag来得到flag但是!isset(flag来得到flag但是!isset(flag来得到flag但是!isset(_GET'fl0g')和if($fl0g==="flag_give_me")前后矛盾了,最后不能够通过echo flag来解决本题,但是还有一个eval()函数,我们通过eval()函数来执行我们传入的flag来解决本题,但是还有一个eval()函数,我们通过eval()函数来执行我们传入的flag来解决本题,但是还有一个eval()函数,我们通过eval()函数来执行我们传入的c

首先我们要满足

php 复制代码
if(isset($_POST['CTF_SHOW']) && isset($_POST['CTF_SHOW.COM']) && !isset($_GET['f10g']))

要求CTF_SHOW,CTF_SHOW.COM,必须存在而fl0g必须不存在

注意: PHP 在解析全局变量时,会将非法字符(如点号 .)自动转换为下划线 ,[ 会转换为 并且一旦已经进行了一次"非法字符检查"后就不会再进行检查,所以后面的.就保留了下来。(类似于双写绕过)

在 PHP 中,POST 传入 CTF_SHOW.COM=1 会被解析为 POST′CTFSHOWCOM′,导致isset(_POST'CTF_SHOW_COM',导致 isset(POST′CTFSHOWCOM′,导致isset(_POST'CTF_SHOW.COM') 失败。

绕过方法:使用 CTF[SHOW.COM=1。PHP 在解析时,遇到 [ 会将其转换为 _,但随后会停止转换后面的字符。因此 CTF[SHOW.COM 会被解析为 CTF_SHOW.COM

然后是正则表达式的限制和对$c参数长度的限制

php 复制代码
if(!preg_match("/\\\\|\/|\|\|\~|\`|\!|\@|\#|\%|\^|\*|\-|\+|\=|\{|\}|\"|\'|\,|\.|\;|\?/", $c) && strlen($c) <= 18)

未被过滤的常用符号:美圆符号 $、小括号 ()、方括号 \[\]、大于小于号 <>、冒号、空格

php 复制代码
eval("$c" . ";");
if($fl0g==="flag_give_me"){
    echo $flag;
}

当你传入 fun=echo flag(即 c 的值为 echo $flag)时,eval() 实际执行的字符串是:

php 复制代码
echo $flag;

所以payload为:

CTF_SHOW=1&CTF[SHOW.COM=1&fun=echo $flag

相关推荐
子兮曰5 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰5 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
一隅论数智5 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
前端小万5 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝5 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
千里马学框架5 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台5 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
三十而立洋5 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
AFinalStone5 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
卡布鲁5 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js