Day4
Day4
文件包含(相当于任意文件读取不包括php)
1.代码复用
2.并行开发
3.模块化
4.增加移植性
<?php $a= $POST['a']; $b= $POST['b']; function add($num1,$num2) { return $num1+$num2; } $c=add($a,$b); echo $c;
include和eval的区别 都不是函数,都是语言结构,无法通过配置文件函数禁用来禁用
include的参数是路径,表示要执行的php文件的路径,读取路径中文件内容,然后执行里面的php代码(相当于告诉php我要执行的代码在哪里,你去把它读出来)
eval后面跟php代码,表示要执行php代码
php的常见文件包含函数,语言结构
include仅仅包含文件,如果文件不存在,没什么大不了,继续执行后面的代码
require必须给老子包含这个文件,如果没包含好,我就摆烂不执行了,报错
include_once 包含一次 遇到错误继续执行
require_once 成功包含一次,遇到错误停止
include "flag.php";
文件包含漏洞,是指通过文件包含时,包含的内容我们的用户可控
当包含的东西没有php代码他就一律认为是文本文档
php伪协议
1、什么是协议
网络层协议
ip协议
icmp协议
arp协议
igmp协议
应用层协议
http协议
https协议
ftp协议
ssh协议
gopher协议
qq拉起协议 tencent://qq/go123 交给专门的应用来处理,应用指本地程序
百度网盘的拉起协议 下载 自动就会启动我们的本地百度网盘的程序
2、协议的格式
协议头://内容
3、php中的协议
看手册
这些必须掌握:
file协议
http协议
ftp协议
php协议
data协议
phar协议
file协议
不写协议名称,就默认为是file协议
支持路径混杂模式
include "../html/flag.php";
上层目录特性
1每个目录都有上层目录
2根目录的上层目录是目录本身
/var/www/html/../../../=>/目录 上溯
php目录整理特性
/var/www/html/ctfshow/../flag.php
/var/www/html/flag.php
http协议
小爬虫
记得改配置文件
url_include on
配合文件包含读取远程的php代码并在本地运行,实现了最终rce的效果
ftp协议
默认21端口,进行文件传输的协议
php协议
php://input
php://filter
注意bp不能抓127.0.0.1需要ipcinfig查本地ip
拿到的是完整结果
这里可以直接写php代码实现命令执行
php文件上传机制
$GET $POST
$SERVER $COOKIE
$SESSION $FILES 超全局变量
将文件临时放在
/tmp/phpXXXXXX(一共九位)
. /???/?????????[@-[]
- 感谢你赐予我前进的力量