gopher协议
简介
Gopher是Internet上一个非常有名的信息查找系统,它将Internet上的文件组织成某种索引,很方便地将用户从Internet的一处带到另一处。在WWW出现之前,Gopher是Internet上最主要的信息检索工具,Gopher站点也是最主要的站点,使用tcp70端口。但在WWW出现后,Gopher失去了昔日的辉煌。
gopher协议支持发出GET、POST请求:可以先截获get请求包和post请求包,在构成符合gopher协议的请求。gopher协议是ssrf利用中最强大的协议
Gopher协议格式
URL:gopher://<host>:<port>/<gopher-path>_后接TCP数据流
- gopher的默认端口是70
- 如果发起post请求,回车换行需要使用%0d%0a,如果多个参数,参数之间的&也需要进行URL编码
发送GET请求
curl
curl www.baidu.com -A参数指定客户端的用户代理标头,即User-Agent -b参数用来向服务器发送 Cookie。 -d参数用于发送 POST 请求的数据体
gopher
curl gopher://192.168.10.128:70/_coleak
a.php
<?php echo "Hello ".$_GET["name"]."\n" ?>
发起get请求的格式
GET /a.php?name=a HTTP/1.1
Host: 192.168.10.128
URL编码
%5f%47%45%54%20%2f%61%2e%70%68%70%3f%6e%61%6d%65%3d%61%20%48%54%54%50%2f%31%2e%31%0d%0a%48%6f%73%74%3a%20%31%39%32%2e%31%36%38%2e%31%30%2e%31%32%38%0d%0a
最终格式为:
curl gopher://192.168.10.128:80/_%5f%47%45%54%20%2f%61%2e%70%68%70%3f%6e%61%6d%65%3d%61%20%48%54%54%50%2f%31%2e%31%0d%0a%48%6f%73%74%3a%20%31%39%32%2e%31%36%38%2e%31%30%2e%31%32%38%0d%0a
注意事项
1、问号(?)需要转码为URL编码,也就是%3f
2、回车换行要变为%0d%0a,但如果直接用工具转,可能只会有%0a
3、在HTTP包的最后要加%0d%0a,代表消息结束
gopher发POST请求
POST /a.php HTTP/1.1 Host: 192.168.10.128 Content-Length: 11 Content-Type: application/x-www-form-urlencoded name=coleak
URL编码
curl gopher://192.168.10.128:80/_%50%4f%53%54%20%2f%61%2e%70%68%70%20%48%54%54%50%2f%31%2e%31%0d%0A%48%6f%73%74%3a%20%31%39%32%2e%31%36%38%2e%31%30%2e%31%32%38%0d%0A%43%6f%6e%74%65%6e%74%2d%4c%65%6e%67%74%68%3a%20%31%31%0d%0A%43%6f%6e%74%65%6e%74%2d%54%79%70%65%3a%20%61%70%70%6c%69%63%61%74%69%6f%6e%2f%78%2d%77%77%77%2d%66%6f%72%6d%2d%75%72%6c%65%6e%63%6f%64%65%64%0d%0A%0d%0A%6e%61%6d%65%3d%63%6f%6c%65%61%6b%0d%0A