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协议

img

img

小爬虫

img

记得改配置文件

url_include on

配合文件包含读取远程的php代码并在本地运行,实现了最终rce的效果

ftp协议

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

php协议

php://input

img

img

img

php://filter

img

注意bp不能抓127.0.0.1需要ipcinfig查本地ip

img

拿到的是完整结果

这里可以直接写php代码实现命令执行

img

php文件上传机制

$GET $POST

$SERVER $COOKIE

$SESSION $FILES 超全局变量

将文件临时放在

/tmp/phpXXXXXX(一共九位)

. /???/?????????[@-[]