bugku-web-ctf-变量1

php 复制代码
<?php  
error_reporting(0);
include "flag1.php";
highlight_file(__file__);
if(isset($_GET['args'])){
    $args = $_GET['args'];
    if(!preg_match("/^\w+$/",$args)){
        die("args error!");
    }
    eval("var_dump($$args);");
}
?>
  1. error_reporting(0); - 这行代码关闭了错误报告,这意味着PHP将不会显示任何错误信息。这可能会隐藏一些重要的错误,使得调试和安全审查变得更加困难。

  2. include "flag1.php"; - 这行代码尝试包含名为flag1.php的文件。这个文件可能包含一些变量定义或其他代码。

  3. highlight_file(__file__); - 这行代码使用highlight_file函数高亮显示当前脚本文件的源代码。__file__是一个魔术常量,它返回当前文件的路径。

  4. if(isset($_GET['args'])){ - 这个if语句检查$_GET['args']是否存在。$_GET是一个超全局数组,包含了GET请求的参数。

  5. $args = $_GET['args']; - 如果args参数存在,将其值赋给变量$args

  6. if(!preg_match("/^\w+$/",$args)){ - 使用preg_match函数来检查$args是否只包含单词字符(字母、数字和下划线)。如果不符合这个模式,preg_match将返回false

  7. die("args error!"); - 如果$args不符合预期的模式,脚本将终止执行并输出错误信息。

  8. eval("var_dump($$args);"); - 如果$args通过验证,eval函数将执行一个字符串作为PHP代码。这里,它尝试输出变量$args所指向的变量的值。$$args是一个变量的引用,它将根据$args变量的值来确定要输出的变量名。

超全局变量:在全部作用域中始终可用的内置变量。

提示说flag在变量里面,经分析只要运行 eval("var_dump($$args);");,falg很有可能就会出来

args====\>我们可以猜想$args很有可能是一个数组,应该想到的就是超全局变量$GLOBALS 他是用存储全局变量的,全局变量的值在这个超级全局变量里面是一个键值,相当于hashmap的键值对 全局变量可以通过变量名在$GLOBALS找到相对应的值。 eval()这个函数的作用是字符串里面的php代码按正常的php代码被执行 通过构造一个GET参数,直接传GET一个全局变量即可 原文链接:https://blog.csdn.net/weixin_43272781/article/details/95034922

相关推荐
Q_Q19632884754 小时前
python的电影院座位管理可视化数据分析系统
开发语言·spring boot·python·django·flask·node.js·php
Ashlee_code6 小时前
香港券商智能櫃台系統技術解決方案——融合跨境清算與AI風控,助力券商把握滬港雙市爆發機遇**
java·科技·金融·重构·架构·系统架构·php
nightunderblackcat8 小时前
进阶向:人物关系三元组,解锁人物关系网络的钥匙
开发语言·python·开源·php
向日葵.1 天前
fastdds.ignore_local_endpoints 属性
服务器·网络·php
dog2501 天前
难以超越的 TCP AIMD
网络协议·tcp/ip·php
檀越剑指大厂1 天前
【Linux系列】如何在 Linux 服务器上快速获取公网
linux·服务器·php
Q_Q5110082851 天前
python的软件工程与项目管理课程组学习系统
spring boot·python·django·flask·node.js·php·软件工程
BingoGo1 天前
重新学习 PHP 目前短运算符 简化你得代码
后端·php
Fine姐2 天前
The Network Link Layer: 无线传感器中Delay Tolerant Networks – DTNs 延迟容忍网络
开发语言·网络·php·硬件架构
hotlinhao2 天前
php版的FormCreate使用注意事项
php·crmeb