找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 88|回复: 0

php文件包含漏洞小结

[复制链接]

2万

主题

128

回帖

10万

积分

管理员

积分
105670
发表于 2022-6-1 19:04:24 | 显示全部楼层 |阅读模式 IP:山东省 移动/数据上网公共出口

登录后更精彩...O(∩_∩)O...

您需要 登录 才可以下载或查看,没有账号?立即注册

×
php文件包含漏洞小结


0x00 文件包含的出现

开发者为了节约开发时间,可以将重复利用的代码使用文件包含的函数,如include,reuqire等进行文件包含,大大节约开发的时间和成本。


0x01文件包含函数

Include:包含并指定运行的函数。如果未找到文件则include结构会发出一条警告。

Require:包含并指定运行的函数。如果未找到文件则include结构会发出一个致命的错误。

Include_once:include_once语句和include语句完全相同,唯一区别是php会检查该文件是否已经被包含过,如果是则不会包含。

Require_once:require_once语句和require语句完全相同,唯一区别是php会检查该文件是否已经被包含过,如果是则不会包含。


0x02 php伪协议

Php支持的伪协议和封装协议:

具体协议请参照



0x03常见伪协议的用法:

1. file://:指定一个绝对路径包含,该路径表示服务器所存在的文件的路径。

例如:


2. php://

1. php://input是个可以访问请求的原始数据的只读流,在PHP5.6之前打开的数据流只能读取一次。需要在配置文件php.ini的allow_url_include设置为on

例如:http://192.168.10.115/test.php?file=php://input [POST DATA]<?php eval($_POST[cmd]); ?>,使用菜刀连接方式如下:[复现失败


2. php://filter是一种元封装器,设计用于数据流打开时的筛选过滤应用。使用以下的参数将作为它路径的一部分。


例子:[复现失败]


读取的内容为base64编码。



0x04例题

下面是来源于XTCTF的一道文件包含题:


如图源码显示,$page表示GET传过来的参数,会将该参数进行包含。在while循环条件中,strstr表示查找字符串的首次出现,如果存在php://,循环不会结束。str_replace会将$page参数中中的php://字符替换为空,说明该循环是为了除掉php://伪协议。

这里可以发现,php://被过滤无法使用,file://需要知道本地文件的路径,我们可以使用data://伪协议进行包含。

使用playload[复现成功]




输出当前文件的路径,然后使用playload[复现成功]




读出当前路径下的所有文件,看到flag文件,读出该文件的内容就能拿到flag值。playload[复现成功]






回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|IOTsec-Zone|在线工具|CTF WiKi|CTF平台汇总|CTF show|ctfhub|棱角安全|rutracker|攻防世界|php手册|peiqi文库|CyberChef|猫捉鱼铃|手机版|小黑屋|cn-sec|分享屋 ( 鲁ICP备2021028754号 )

GMT+8, 2024-5-4 14:13

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表