2024.3.23日志

本文详细探讨了PHP中的文件包含漏洞,包括其原理、常见的include和require函数的区别,以及本地文件包含(LFI)、RCE的特性。还介绍了PHP伪协议如file://、http://等在CTF中的应用,以及Webshell的概念和利用条件,着重于allow_url_fopen和allow_url_include设置的影响。
摘要由CSDN通过智能技术生成

考核题目复现

参考资料:http://t.csdnimg.cn/ZiyBd

                  http://t.csdnimg.cn/UaIqn
 

文件包含漏洞全面详解-CSDN博客

CTF中文件包含漏洞总结-CSDN博客

         

Rseeee

首先对相关函数进行搜索解读

error_reporting(0); 表示关闭所有PHP错误报告

检查cmd是否为字符串

过滤了\;|\&|\\$|\x09|\x26|tac|cat|more|less|head|sort|tail|sed|cut|awk|strings|od|php|ping|flag

判断为rce无回显(虽然可以执行命令,但是看不到命令执行的结果,也不知道命令是否被执行)

用tee命令将代码复制到文件中,访问后发现flag

绕过cat和flag进行复制

打开后可得到flag

文件包含

文件包含漏洞:一种注入型漏洞,本质是输入一段用户能够控制的脚本或者代码,并让服务端执行。

包含:以PHP为例,我们常常把可重复使用的函数写入到单个文件中,在使用该函数时,直接调用此文件,而无需再次编写函数。

以PHP为例,常用的文件包含函数有四种:include(),require(),include_once(),require_once()

include():找不到被包含的文件只会产生警告,脚本继续执行,并且include()函数并不在意被包含的文件是什么类型,只要有php代码,都会被解析出来。

require():找不到被包含的文件就会产生错误,停止脚本运行

include_once()与irequire_once():如果该文件的代码已经被包含,则不会再次包含,其他性质如上

本地文件包含漏洞(LFI):本地文件包含漏洞指的是包含本地的php文件,而通过PHP文件包含漏洞入侵网站,可以浏览同服务器所有文件,并获得webshell[妍陈1] 

PHP伪协议

file://用于访问本地文件系统,在CTF中通常用来读取本地文件的且不受allow_url_fopen与allow_url_include的影响

http://用于访问HTTP(s)网址

ftp://用于访问FTP(s)URL(s)

php://用于访问各个输入输出流,在CTF中经常使用的是php://filter和php://input

php://filter用于读取源码,并进行base64编码输出,不然会直接当做php代码执行看不到源代码内容。

php://input用于执行php代码。可以访问请求的原始数据的只读流, 将post请求中的数据作为PHP代码执行。当传入的参数作为文件名打开时,可以将参数设为php://input,同时post想设置的文件内容,php执行时会将post内容当作文件内容。从而导致任意代码执行。

利用条件:allow_url_fopen :off/on     allow_url_include:on

glob://用于查找匹配的文件路径模式

zip:// 只能传入决定路径,可以访问压缩包里面的文件。当它与包含函数结合时,zip://流会被当作php文件执行,从而实现任意代码执行。要用#分割压缩包和压缩包里的内容,并且#要用url编码成%23,只需要是zip的压缩包即可,后缀名可以任意更改。相同的类型还有zlib://和bzip2://

利用条件:allow_url_fopen :off/on     allow_url_include:off/on

data://同样类似与php://input,可以让用户来控制输入流,当它与包含函数结合时,用户输入的data://流会被当作php文件执行。从而导致任意代码执行。利用data:// 伪协议可以直接达到执行php代码的效果。

利用条件:allow_url_fopen :on     allow_url_include:on

include 语句可以动态地包含用户发送的 GET 请求


 Webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,也可以将其称做为一种网页后门

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值