include详解 shell_详解php文件包含原理(读取文件源码、图片马、各种协议、远程getshell等) ......

详解php文件包含原理(读取文件源码、图片马、各种协议、远程getshell等)

作者是namezz

(看完图相当于做了一轮实验系列)

现有文件代码如下

include和include_once、require、require_once用处差不多,故只举include例说明。话不多说,开始正文。(正文太啰嗦了,直接看总结吧)

功能说明

分别包含aaa和zzz,效果如下图所示

读取到zzz文件的内容<?phpecho __FILE__;并解析执行了,而aaa文件识别不为php,故直接输出源码内容。故包含/etc/passwd同理

用readfile读文件如图所示

由于加了图片头header,所以浏览器识别为图片类型。f12或抓包能看到响应包情况,能看到与include等不同的是,readfile是直接读文件内容,而不解析的。file_get_content同理(用法自行百度)。

原理说明:文件包含究竟包含了啥

首先,include函数和readfile函数都是先读取指定的内容(注意,这里是指定的内容而不是文件的内容,后面解释),而include函数会试图解析读取的内容,是否为php代码,如若是则执行,否则直接输出

如图所示,使用file协议、http协议、php协议(官方文档:http://php.net/manual/zh/wrappers.php)效果分别如下

因为默认配置是没开allow_url_include的,所以使用http协议读文件会失败(开了就是远程包含,后面会说)

以上使用file协议和php协议都读到了文件的源码,并执行了

在使用php://filter/read=convert.base64-encode/和php://filter/string.rot13/对读取的内容进行编码看看

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值