BugKu-WEB-变量1

BugKu-WEB-变量1

Mel0ny Lv5

BugKu-WEB-变量1

题目

Question
Question

思路

打开可以看到是一份php代码,估计就是在考察代码审计

1
2
3
4
5
6
7
8
9
10
11
12
<?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.删除错误信息
2.引用flag1.php文件
3.显示目前文件的源代码
4.检测args这个变量有没有从GET方法那里定义,如果有就执行下面的语句
5.先定义args为从GET方法获得的args的值,然后根据”/^\w+$/“这个正则表达式(大概意思是只能是数字,字母和下划线组成)来执行下面的exit()方法,也就是说不满足条件的就直接终止程序然后输出”args error!”
6.最重要的一步,通过eval()来执行字符串中的php代码,字符串中的大概意思是返回$$args变量的信息,比如说我输入?args=flag,那么下面就会返回$flag的变量信息
加上题目说的flag In the variable !,说明我们要输入一个特定的字符串,那个字符串就是藏着flag的变量,如果在flag1.php中没有定义的,那就会返回NULL
php中有普通人为规定的变量,也有系统变量,在这个系统变量用有一个GLOBALS超级全局变量,可以看到全部的变量,此时我们传入数据?args=GLOBALS,就可以看到全部的变量了

这个变量名应该也是为了防止爆破之类的,只能靠php基础

Question

Flag

1
flag{3107a288e375d11375f622c2729382d5}
  • 标题: BugKu-WEB-变量1
  • 作者: Mel0ny
  • 创建于 : 2025-08-31 10:09:59
  • 更新于 : 2025-08-31 11:59:59
  • 链接: https://mel0nyrame.github.io/2025/08/31/BugKu-WEB-变量1/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
BugKu-WEB-变量1