变量1
题目:http://123.206.87.240:8004/index1.php
1 flag In the variable ! <?php 2 3 4 error_reporting(0); // 关闭php错误显示 5 include "flag1.php"; // 引入flag1.php文件代码 6 highlight_file(__file__); 7 if(isset($_GET['args'])){ // 通过get方式传递 args变量才能执行if里面的代码 8 $args = $_GET['args']; 9 if(!preg_match("/^\w+$/",$args)){ 10 // 这个正则表达式的意思是匹配任意 [A-Za-z0-9_] 的字符,就是任意大小写字母和0到9以及下划线组成 11 die("args error!"); 12 } 13 eval("var_dump($$args);"); // 这边告诉我们这题是代码审计的题目 14 } 15 ?>
参考 https://blog.csdn.net/qq_38603541/article/details/85106740
知识点
preg_match()
执行一个正则表达式匹配
$GLOBALS
超级全局变量
全局变量可以通过变量名在$GLOBALS找到相对应的值。
die()
输出一条消息,并退出当前脚本
error_reporting(0);
关闭报错
屏蔽掉所有运行时刻的错误检查
error_reporting(-1);
表示显示所有PHP错误报告
eval()
把字符串当成 PHP 代码来计算