文件包含基础

时间:2024-11-11 08:45:10

<aside> ????

文件包含产生原因

</aside>

1.web应用实现了动态包含:

**<?php
$path = "./inc.php";
include_once("./inc.php");
echo "<h1>This is include_once.php!</h1>";
include_once $path;
?>**

2.动态包含的文件路径参数,客户端可控:

**<?php
$path = $_GET['path'];
include_once("./inc.php");
echo "<h1>This is include once.php!</h1>";
include_once $path;
?>**

<aside> ????

本地文件包含

</aside>

(LIF):当被包含的文件在服务器本地时,就形成的本地文件包含漏洞。

<aside> ????

远程文件包含

</aside>

(RLF):本地文件包含和远程文件包含造成漏洞的原因是一样的

     **当php.ini 中的配置选项allow ur fopen和allow url include(默认是关闭的)为ON的话,则包含的文件可以是第三方服务器中的文件,这样就形成了远程文件包含漏洞。**

<aside> ????

PHP中常见的包含文件的函数

</aside>

include 当使用该函数包含文件时,只有代码执行到include()函数时才将文件包含进来发生错误时之给出一个警告,继续向下执行
include once 功能与lnclude()相同,区别在于当重复调用同一文件时,程序只调用一次
require require()与include()的区别在于require( )执行如果发生错误,函数会输出错误信息
require once 功能与require()相同,区别在于当重复调用同一文件时,程序只调用一次

<aside> ????

敏感目录文件

</aside>

Unix/Linux 系统:

  • /etc/passwd
  • /usr/local/app/apache2/conf/httpd.conf //apache2 默认配置文件
  • /usr/local/app/php5/lib/php.ini // PHP 相关设置
  • /etc/my.cnf // Mysql 配置文件

Windows 系统:

  • C:\\windows\\system32\\inetsrv\\MetaBase.xml // IS 配置文件
  • C:\\windows\\repair\\sam // 存储 Windows 系统初始安装密码
  • C:\\boot.ini // 查看系统版本

/etc/passwd 账户信息 /etc/shadow 账户密码文件 /etc/my.cnf mysql配置文件 /root/.ssh/id_rsa ssh-rsa私钥 /etc/redhat-release 系统版本 /root/.bash_history 用户历史命令记录文件 /home/user/.bash_history 特定用户的历史命令记录文件 /root/.mysql_history mysql历史命令记录文件 /var/lib/mlocate/mlocate.db 全文件路径 /proc/net/fib_trie 内网IP /proc/self/environ 环境变量

/proc/1/environ 进程pid为1的 环境变量 /proc/self/loginuid 当前用户uid