萌新楼主最近也是刚开始做ctf中web部分,在这里分享一下我自己做题经验。希望对大家有帮助。
//以下是萌新分析
flag In the variable ! //flag在变量中
<?php error_reporting(0); //关闭php中错误提示
include"flag1.php"; //将flag1.php文件包含进来。
highlight_file(__file__); //highlight_file()函数是高亮显示PHP语法。详细参考:highllight()函数
if(isset($_GET['args'])){ //判断是否传入args参数
$args = $_GET['args']; //赋值
if(!preg_match("/^\w+$/",$args)){ //重点来了。这是一个正则表达式匹配字符串的函数,在这里意思是匹配任意 [A-Z,a-z,0-9,_] 的字符,就是任意大小写字母和0到9以及下划线组成.详情参考:正则表达式
die("args error!"); // 因为if语句取反了,所以如果不匹配会输出 args error!
}
eval("var_dump($$args);"); //eval() 将文本变成php命令执行。 这里也就是打印变量。$$args可以理解为$($args)
}
?>
这是web中一道关于变量的题,代码的分析我已经写在上面了,代码也是这道题的关键。
综上所述,我们并不能直接将文件名直接带入变量中,但是我们可以想到GLOBALS这个超全局变量,于是我们可以用 args=GLOBALS 传入就得到了flag了。
觉得有帮助的就点个赞吧!关注楼主每天更新web题型,更有性感学长在线答疑。