PHP-$$变量覆盖

题目信息

题目名称 题目难度
PHP-$$变量覆盖 1

题目考点

复制代码
变量覆盖指的是用我们自定义的参数值替换程序原有的变量值,一般变量覆盖漏洞需要结合程序的其它功能来实现完整的攻击。
经常导致变量覆盖漏洞场景有:$$,extract()函数,parse_str()函数等.

Flag格式:

复制代码
SangFor{yIMTJpEwJghjSgd5}

环境部署

docker-compose.yml文件或者docker tar原始文件。

复制代码
http://分配ip:2009

题目writeup

1、实验主页

2、源码分析

复制代码
<?php
error_reporting(0);
include "flag.php";
highlight_file(__file__);
if(isset($_GET['args'])){
    $args = $_GET['args'];
    if(!preg_match("/^\w+$/",$args)){
        die();
    }
    eval("var_dump($$args);");
}
else{
    "yyds";
}
?>

分析代码逻辑,首先检测变量是否设置,然后是一个正则匹配传入的值。

复制代码
/^\w+$/

两个//表示开始和结束

^表示开始字符串

$表示结束字符串

\w表示包含a-z,A-Z, _ , 0-9

+表示一个或者多个\w

总体意义就是限定一个任意长字符串全部由字母数字组成,前面中间后面都不能有空格、标点等非\w字符。

如果args的值是只由大小写字母数字和下划线,则执行eval("var_dump($$args)")。

通过提示"flag在变量里",想能不能通过打印所有变量的值来获得flag。

这里介绍一个超全局变量$GLOBALS,它可以引用全局作用域中可用的全部变量(一个包含了全部变量的全局组合数组。变量的名字就是数组的键),与所有其他超全局变量不同。我们尝试输入"?args=GLOBALS"获得flag

复制代码
http://localhost/?args=GLOBALS
相关推荐
广州灵眸科技有限公司15 分钟前
瑞芯微RV1126B开发板(EASY-EAI-PI2) 系统操作-线进程操作
数据库·单片机·嵌入式硬件·算法·php
没钥匙的锁11 小时前
16-Java反射机制:Spring IOC背后的核心技术
java·开发语言·spring
起予者汝也1 小时前
Python 数据结构
开发语言·数据结构·python
ECT-OS-JiuHuaShan3 小时前
严格证明:还原论是ASCII,整体论是UTF-8的历史意义和价值
开发语言·人工智能·算法·量子计算
AC赳赳老秦3 小时前
时间开销自动统计:OpenClaw 记录工作任务时长、分析时间分配、给出优化建议
java·大数据·开发语言·python·自动化·deepseek·openclaw
祉猷并茂,雯华若锦3 小时前
Appium 3.x 实战:元素定位与常见错误解析
开发语言·python·appium
Lethehong4 小时前
飞算Java:从需求梳理到风险闭环,搭建云盾企业信息安全与权限管理平台
java·开发语言
爱喝水的鱼丶4 小时前
SAP-ABAP:ALV数据导出增强——实现Excel/PDF/CSV多格式自定义导出
开发语言·性能优化·sap·abap·erp
Mortalbreeze4 小时前
深入理解 Linux 线程机制(四):线程同步——条件变量与信号量
linux·运维·服务器·开发语言·c++
不会c+4 小时前
C语言:入门到精通(408考研版)系列七 派生的数据类型
c语言·开发语言