其实看这个名字的时候就在想是不是和目录遍历有关了。
Scan
打开靶场页面检查发现确实没有什么,所以用dirsearch扫描一下。
在经历漫长扫描后,在report中找到扫描文件报告打开,查找响应状态码为200的文件,得到:
|
|
看大小就知道第二个有一些东西,输入网址得到一个bak文件的下载。
|
|
进行一些翻译:
-
include_once "flag.php";表示在代码中包含了一个名为flag.php的文件。通过这行代码,flag.php文件中的内容会被复制到当前代码文件的相应位置——这样做的目的是为了引入该文件中定义的变量、函数或类,以便在当前代码文件中使用它们。
-
- 如果 HTTP GET 请求中带有
key参数,代码将进入相应的条件判断分支。
- 如果 HTTP GET 请求中带有
-
key参数的值被赋给变量$key。
-
- 如果
$key不是一个数字(通过is_numeric函数判断),将输出 “Just num!” 并终止程序执行。
- 如果
-
- 如果
$key是一个数字,则将其转换为整数(通过intval函数实现)。
- 如果
-
- 字符串变量
$str初始化为 “123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3”。
- 字符串变量
-
- 如果
$key的值等于$str的值,将输出flag的值。
- 如果
-
- 如果没有提供
key参数,将输出 “Try to find out source file!"。
- 如果没有提供
translate
?key=
所以去看看flag.php有什么,但是打开是一片空白。
(在这里犯了一个错误,就是认为key这个请求参数是在flag.php下生效。然后搞半天没有任何东西。)
其实从index.php.bak这个名字就可以知道是和index.php有关。不过网站的默认首页就是它,所以不用写http://xx/index.php?key=,直接写http://xx/?key=就行。
Just Num
前面提到一个is_numeric()函数判断是否是数字,所以$key=$str的值其实只是123.
(把$str的值ctrl+c上去,得到一个just num,嗯,想起来高中时候的一些题目。)
ファンワイ
因为嫌弃dirsearch太慢所以去找了个新的dirmap,但是没有任何out file生成……可能还需要调一下配置。