[NPUCTF2020]ezinclude
一道php文件临时包含的题目,之前没见过
进入之后 根据提示 给pass传一个hash值 可以抓包看到
然后直接在bp里操作就行,不然网页会挑战到一个404网页
存在文件包含
一般这种flag文件名称会被改写成奇奇怪怪的形式,靠猜是猜不到的
读一下当前页面的源码吧 用一下伪协议
构造payload:?file=php://filter/read=convert.base64-encode/resource=flflflflag.php
发现data input zip协议都被河蟹了 没办法直接命令执行
源码如下
1 | <html> |
扫一下网站 发现还有config.php 里面是假的flag 还有一个dir.php
内容如下:
发现这个文件可以帮我们扫/tmp的文件目录 这个目录是存储用户临时文件的地方 我们对他有写权限
这里用到了 php临时文件包含的漏洞 具体参考(https://www.anquanke.com/post/id/201136#h2-11)
php7.0的bug:
1 | ?file=php://filter/string.strip_tags/resource=/etc/passwd |
使用php://filter/string.strip_tags
导致php崩溃清空堆栈重启,如果在同时上传了一个文件,那么这个tmp file就会一直留在tmp目录,再进行文件名爆破就可以getshell,这个崩溃原因是存在一处空指针引用。
该方法仅适用于以下php7版本,php5并不存在该崩溃。
• php7.0.0-7.1.2可以利用, 7.1.2x版本的已被修复
• php7.1.3-7.2.1可以利用, 7.2.1x版本的已被修复
• php7.2.2-7.2.8可以利用, 7.2.9一直到7.3到现在的版本已被修复
利用大佬现成的脚本
1 | import requests |
之后再去看看dir.php
发现我们的恶意文件已经被上传
再去包含一下我们的文件