一、靶场解题过程
- 题目描述:try your best to find the flag.
-
进入靶场后看到的是一张图片
-
查看网页源代码,发现一个
source.txt
的注释信息,可能路径上有这个文件,尝试访问一下
-
访问后出现一个新的页面
-
该页面有一些php的代码信息,尝试进行解释
<?php
include("secret.php"); # 包含名为 "secret.php" 的文件。这意味着,本文件会将 "secret.php" 中的代码插入到当前位置。通常情况下,这样做是为了重用或者引入其他文件中的函数、类等内容
if($_SERVER["REQUEST_METHOD"] == "POST"){
# 这是一个条件语句,用于检查用户请求的方法是否为 POST。如果是,则执行条件块中的代码;否则,跳过条件块extract($_POST); # extract 函数用于将数组中的键值对导入到当前的符号表(变量列表)中,使得可以直接使用数组中的键作为变量名,对应的值作为变量值if($bug == $secret){# 在使用 extract($_POST); 后,可以直接使用 $bug 和 $secret 作为变量。这行代码比较 $bug 和 $secret 是否相等,如果相等,则输出一个包含 flag 的字符串;否则,什么也不做(die("") 表示程序终止且不输出任何内容)die("FLAG: flag{xxxxxx}");}else{die("");}
}
?>
- 根据代码,使用POST方法传入
bug
和secret
这两个变量,同时使他们的值相等
二、extract
- 详情见:https://www.php.net/extract/