主页 > 网络知识 > PHP文件包含小总结(3)

PHP文件包含小总结(3)

 

PHP文件包含小总结

 

3.4.Getshell之利用phpinfo

条件:存在phpinfo页面并且存在文件包含漏洞

 

PHP文件包含小总结

 

原理:

 

当我们给PHP发送POST数据包时,如果数据包里包含文件区块,PHP就会将文件保存成一个临时文件,路径通常为:/tmp/php[6个随机字符],这个临时文件,在请求结束后就会被删除。

 

 

因为phpinfo页面会将请求上下文中的所有变量打出来,所以我们如果向phpinfo页面发送包含文件区块的数据包,就可以在返回包里找到临时文件名,也就是$_FILES变量中的内容。

 

利用:

 

首先我们使用vulhub的脚本(https://github.com/vulhub/vulhub/blob/master/php/inclusion/exp.py),他可以实现包含临时文件,而这个临时文件的内容是:<?php fileputcontents('/tmp/p','<?=eval($_REQUEST[1])?>')?>。成功包含这个文件后就会生成新的文件/tmp/p,这个文件就会永久的留在目标机器上。

 

 

PHP文件包含小总结

 

 

 

写入成功以后,我们利用文件包含来执行任意命令。

 

 

PHP文件包含小总结

 

原理:

那么为啥vulhub的脚本是如何做到在临时脚本文件删除前去包含的呢,其实就是用到了条件竞争,具体流程大致如下:

 

首先发送包含webshell的数据包给phpinfo页面,并用大量的垃圾数据将header和get等位置填满。

 

 

因phpinfo页面会将所有数据打印出来,第一个步骤中的垃圾数据就会将phpinfo页面撑的非常大。而php默认输出缓冲区大小为4096,也可以理解为php每次返回4096个字节给socket连接。

 

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!