题目出处:首页 - Bugku CTF
✨打开链接后你将会看到一段代码,如下所示:
✨首先,第一句话就提示你,flag就在这段代码中!!!
✨其次,对这段代码进行分析!!!
error_reporting(0);
:这行代码是用来关闭错误报告的,这样在执行脚本时就不会显示任何错误信息。include "flag1.php";
:这行代码是用来包含一个名为"flag1.php"的文件。这个文件可能包含了一些重要的设置或者变量。highlight_file(__file__);
:这行代码是用来高亮显示当前文件的源代码。__file__
是一个魔术常量,它返回当前文件的路径。if(isset($_GET['args'])){...}
:这是一个条件判断语句,它检查是否设置了名为’args’的GET请求参数。如果设置了,就执行大括号内的代码。$args = $_GET['args'];
:这行代码将GET请求参数’args’的值赋给变量$args。if(!preg_match("/^\w+$/",$args)){...}
:这是另一个条件判断语句,它使用正则表达式检查$args是否只包含字母、数字和下划线。如果不是,就执行大括号内的代码。die("args error!");
:这行代码用于终止脚本的执行,并输出一条错误信息"args error!"。
✨接下来,你就应该了解到args应该满足的正则匹配的内容是!!!
^:匹配输入字符串的开始位置
\w:包含下划线的任意单词字符
+:匹配前面的子表达式一次或多次
$:匹配输入字符串的结束位置
args只要是字母和下划线组成就行
✨所以我令args=flag,竟然发现NULL!!!
✨然后我令args=args,又发现输出了args的属性和内容—string(4) “args”!!!
✨最后就该考虑应该用哪一个变量了!!!
- PHP中预定义超全局变量有:
$_GET : 通过 URL 参数传递给当前脚本的变量的数组。
$_POST : 通过 HTTP POST 方法传递给当前脚本的变量的数组
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
cs/618653875)
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!