攻防世界web新手题fileinclude&fileclude

题目1:fileinclude

工具:

Burpsuite

Hackbar V2

火狐浏览器的扩展应用

解题关键:

学会文件包含的命令以及学会读懂php脚本

解题过程:

首先对该网站进行抓包,发现潜藏的php脚本

这段代码的作用是:

  1. 检查是否 display_errors 配置项被设置为打开,如果没有则将其打开,这样可以在页面上显示所有错误信息。

  2. 将错误报告级别设置为 E_ALL,这样会显示所有类型的错误信息。

  3. 获取名为 'language' 的 cookie 的值赋给变量 $lan。

  4. 如果 'language' 的 cookie 不存在,则设置 'language' 的 cookie 值为 'english',并包含名为 'english.php' 的文件。

  5. 如果 'language' 的 cookie 存在,则根据 'language' 的 cookie 值包含相应的文件。

  6. 使用 file_get_contents 函数读取 'index.php' 文件的内容,并将其赋给变量 $x。

  7. 最后,以文本形式输出从 'index.php' 文件中读取到的内容。

其实意味着这个时候cookie就是我们需要继续进行修改的位置,而language是我们需要进行提交的参数,而我们要做的是获取flag.php的值,首先尝试直接读取php文件(一般无法实现),一般使用php://filter/进行文件访问

php://filter//read=/var/www/html/flag.php

使用hackbar提交cookie,发现文件不存在

更换将文件内容进行base64编码后显示在浏览器上的命令(最后使用flag.php还是flag应情况而确定,需要都尝试)

language=php://filter//read=convert.base64-encode/resource=/var/www/html/flag

得到一串base64编码,将其解码得到flag

题目2:fileclude:

好多file呀!

解题关键:

学会文件包含漏洞的各种命令

解题过程:

进入网页是一串php脚本,接下来我们尝试读懂代码

这段代码是一个简单的PHP脚本。

它首先包含了名为"flag.php"的文件,然后使用highlight_file(__FILE__)来显示当前的PHP脚本文件的代码。

接着,它检查是否有名为"file1"和"file2"的GET参数被设置。如果这两个参数都不为空,它会尝试读取file2文件的内容,如果内容等于"hello ctf",那么它将包含file1文件的内容。如果file1和file2参数不是都不为空,将会输出"NONONO"并终止脚本的执行。

结合题目我们应该意识到我们需要包含flag.php文件接着file2还需要等于"hello ctf",并且file1与file2都不为空才行。那我们可以令file1包含flag.php,并且用到上一题使用的poc使用base64编码获取flag的内容。

file1=php://filter//read=convert.base64-encode/resource=flag.php

 file2内容等于"hello ctf",但我们看到代码中的file_get_contents()函数就意味着file2不能直接等于该内容,而需要使用文件包含的方式,针对于此我们可以使用考虑将该内容构造数据流,使用data:// 与包含函数结合时,让用户来控制输入流,用户输入的data://流会被当作php文件执行。

这里我们区分一下data://与php://input:

1.php://input:

  • php://input 是一个输入流,用于获取请求体中的原始数据。它通常用于接收 POST 请求中的数据,而不是通过GET参数传递的数据。
  • php://input 返回的是请求体中的原始数据,未经任何处理,通常是一个字符串形式的数据。

2.data://:

  • data:// 是一个数据流封装器,用于访问数据的输入输出流。它可以用于访问各种类型的数据,比如字符串、文件、变量等。
  • data://允许访问各种类型的数据,并且可以指定数据类型和编码格式。

执行的命令是

?file2=data://text/plain,hello ctf 

 这两个命令都不为空则是将这两个命令同时get

组合起来是

61.147.171.105:50210/?file1=php://filter//read=convert.base64-encode/resource=flag.php&file2=data://text/plain,hello ctf

 这里有一串base64编码,将其解密得到flag

总结: 

我们要学会使用各种文件包含命令,并且在做题过程中不断积累自己的poc。

  • 40
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值