[actf2020 新生赛]include 1
时间: 2023-05-01 12:01:45 浏览: 159
ACTF 2020 新生赛中的 include 1 题目是一道 C/C++ 题目,要求编写一个程序来解密一段加密后的文本。题目中给出了一个头文件,里面包含了加密和解密函数,通过分析这些函数的实现,并编写程序来调用这些函数,可以得到题目的答案。
相关问题
actf2020新生赛include1
### ACTF2020 新生赛 Include1 题目解析
#### 背景介绍
ACTF2020新生赛中的`Include1`题目属于Web安全领域,主要考察参赛者对文件包含漏洞的理解和利用能力。该题旨在测试选手能否通过特定手段绕过服务器端的安全检测机制来读取敏感文件。
#### 安全检测逻辑分析
给定的PHP代码片段展示了服务端对接收到的`file`参数进行了简单的字符串匹配检查[^3]:
```php
if(stristr($file,"php://input") || stristr($file,"zip://") || stristr($file,"phar://") || stristr($file,"data:")){
exit('hacker!');
}
```
这段代码试图阻止攻击者使用某些危险的协议(如`php://input`, `zip://`, `phar://`, 和 `data:`)来进行恶意操作。然而,这种防护措施并不完善,因为存在其他未被考虑到的有效载荷形式。
#### 利用方法探讨
为了成功获取目标文件的内容,在此案例中即为`flag.php`,可以采用`php://filter`伪协议配合Base64编码的方式实现。具体来说,当请求URL如下所示时:
```
?file=php://filter?read=convert.base64-encode/resource=flag.php
```
此时,PHP解释器会按照指定顺序处理指令链——先应用`php://filter`转换资源路径指向的目标文件(`resource=flag.php`)的数据流;接着调用`convert.base64-encode`滤镜对该数据流实施Base64编码;最后由`include()`函数加载并输出经过上述变换后的结果。
值得注意的是,由于返回的结果是以Base64格式呈现,因此还需要进一步解码才能得到原始文本信息。
#### PHP伪协议概述
`php://filter`是一种特殊的元封装器,允许开发者在打开数据流前对其施加各种类型的过滤操作。这对于那些一次性完成全部工作的内置文件处理函数特别有用,因为在实际读取内容之前并没有提供额外的机会去设置过滤条件[^4]。
---
[ACTF2020 新生赛]Include 1
[ACTF2020 新生赛]Include 1是一道与PHP文件包含漏洞相关的题目。根据提供的引用内容,代码中对$file参数进行了过滤,防止了一些常见的恶意输入。但是通过引用中给出的payload,可以绕过输入的过滤,进一步读取flag.php文件的内容。
通过构造URL:?file=php://filter?read=convert.base64-encode/resource=flag.php,可以将flag.php文件的内容以Base64编码的形式返回。这样我们就可以获取到flag的内容。需要注意的是,该题目是CTF竞赛中的题目,属于安全漏洞利用类的题目,不应用于非法用途。
阅读全文
相关推荐










