fileclude-CTF 解题思路

简介: fileclude-CTF 解题思路

我们先打开题目场景,如图:

函数理解:
include函数:包含并执行变量或者文件。

if:是if语句用来判断。

isset:判断变量是否存在,值是否为NULL。

$_GET:接收表单提交数据,并把数据附加到url链接当中。

逻辑运算符&&:条件都满足才会执行。

关系运算符!:不、反的意思。

empty函数:只用来判断变量的值是否为NULL。

file_get_contents() 函数:把整个文件读入一个字符串中。

===:判断值是否相同并且判断值的类型是否相同。

else:条件都不满足的时候才会执行它。

die函数:输出内容并退出程序。

一、题目分析:
打开题目场景发现有if嵌套语句,存在flag.php,并且可以执行这个文件。

第一个if语句说的是如果file1和file2这两个变量都存在并且值不是空的,就会存放这两个数据的from表单,并将这个数据表单发送到url中。

第二个if语句说的是如果这两个变量都不为NULL,则返回true,并执行,但是前面加的有关系运算符!,所以说这两个值都是空的才会返回true,并执行。显而易见这两个变量都是存在的,但是值都是空的。

第三个if语句说的是file_get_contents() 函数包含file2变量,当满足file2的值等于hello ctf以及值的类型两者相同(类型是字符串),才会执行包含在include函数中的file1变量。(所以说这里咱们需要用到php://input绕过)

当这三个条件都不满足就会输出NONONO这个字符串。(显然可见这是不可能的)

二、 解题思路:
解题关键是在第三个if语句中,我们可以用php://input输入流来绕过file_get_contents函数,达到执行file1变量的目的,用php://filter伪协议来读取源代码,用来拿到flag。

php://input可以读取没有处理过的POST数据。

php://filter伪协议规则:

php://filter/过滤器|过滤器/resource=待过滤的数据流
构造php://filter伪协议规则:

php://filter/convert.base64-encode/resource=flag.php
完整代码:

?file1=php://filter/convert.base64-encode/resource=flag.php&file2=php://input
?是起始符可以理解为连接拼接的意思,file1是场景代码中的变量,=是赋值的意思。

convert转换,base64,encode编码。

&引用,不同名字访问同一变量的内容。

resource=flag.php转换到flag.php文件中,就是说把flag.php文件转换为base64编码格式。

我们先引用file2变量用来请求数据,把flag.php文件的内容赋值给file1变量,因为最终执行的是file1变量。分析到这里就可以了。

三、解题:
用到的工具有:

火狐浏览器FireFox和Max HackBar火狐浏览器插件(之前那个收费了,这个也可以替代之前那个工具,这个插件可以在火狐浏览器扩展哪里搜索并添加)

1、用火狐浏览器打开场景,并按F12找到Max HackBar插件并点击进入。(如果空白可以刷新下页面)

2、在url链接后边添加伪协议和绕过并在Max HackBar那个页面点击Load URL用来在地址栏那里加载URL地址。(和Split URL性质一样只是把url给分割多行了。)

3、✔Post Data。(传递数据)

4、输入hello ctf。

5、点击Execution。

6、拿到base64编码。

base编码解码拿到flag:

技术有限,如有不足,还望各位师傅们指出。

目录
相关文章
|
SQL 安全 关系型数据库
Sqlmap2021 -- Referer注入
Sqlmap2021 -- Referer注入
364 1
|
安全 关系型数据库 MySQL
Sqlmap2021 -- Cookie注入
Sqlmap2021 -- Cookie注入
679 1
|
5月前
|
JSON 网络安全 数据格式
Python网络请求库requests使用详述
总结来说,`requests`库非常适用于需要快速、简易、可靠进行HTTP请求的应用场景,它的简洁性让开发者避免繁琐的网络代码而专注于交互逻辑本身。通过上述方式,你可以利用 `requests`处理大部分常见的HTTP请求需求。
517 51
|
7月前
|
监控 网络协议 Linux
硬件厂商的MIB文档详解 | 如何查询OID? | MIB Browser实战指南-优雅草卓伊凡
硬件厂商的MIB文档详解 | 如何查询OID? | MIB Browser实战指南-优雅草卓伊凡
782 12
硬件厂商的MIB文档详解 | 如何查询OID? | MIB Browser实战指南-优雅草卓伊凡
|
10月前
|
存储 缓存 Docker
docker: No space left on device处理与迁移目录
通过以上方法,可以有效地管理 Docker 的磁盘使用情况,并确保 Docker 运行环境的稳定性和效率。
891 34
|
安全 索引 Python
【攻防世界】Web_python_template_injection
【攻防世界】Web_python_template_injection
|
存储 安全 PHP
03攻防世界-unserialize3
03攻防世界-unserialize3
|
数据安全/隐私保护
Bugku---本地管理员
Bugku---本地管理员
软件体系结构 - 可靠性指标
软件体系结构 - 可靠性指标
1009 0
软件体系结构 - 可靠性指标