本文转载自: https://blog.csdn.net/weixin_45887311/article/details/107327706
为了调试方便,我在win10下安装curl的工具
下载地址:https://curl.haxx.se/download.html
但目前提供的版本已经不支持gopher协议了,所以我千辛万苦找到了7.60的win64版本,支持发送gopher,dict协议
7.60地址:https://wws.lanzous.com/iaV55ekyfjc 点击即可下载
解压后把bin目录加入windows环境变量
一、什么是gopher协议?
定义:Gopher是Internet上一个非常有名的信息查找系统,它将Internet上的文件组织成某种索引,很方便地将用户从Internet的一处带到另一处。在WWW出现之前,Gopher是Internet上最主要的信息检索工具,Gopher站点也是最主要的站点,使用tcp70端口。但在WWW出现后,Gopher失去了昔日的辉煌。现在它基本过时,人们很少再使用它;
gopher协议支持发出GET、POST请求:可以先截获get请求包和post请求包,在构成符合gopher协议的请求。gopher协议是ssrf利用中最强大的协议
限制:gopher协议在各个编程语言中的使用限制
–wite-curlwrappers:运用curl工具打开url流
curl使用curl –version查看版本以及支持的协议
Gopher协议格式:
1 | URL:gopher://<host>:<port>/<gopher-path>_后接TCP数据流 |
- gopher的默认端口是70
- 如果发起post请求,回车换行需要使用%0d%0a,如果多个参数,参数之间的&也需要进行URL编码
二、测试网页:
1、get请求的发送,一个简单的php网页:
1 |
|
用burpsuite抓包复制整体的http请求
可以删除些信息,然后来用curl来测试一下,首先需要对http请求转码,添加%0d%0a
1 | GET /ssrf/get.php?name=yanshu |
附上PY脚本,可以直接使用
1 | import urllib |
请求成功:
2、post请求
测试页面:
1 |
|
但是如果只是简单地把GET包改成POST包发送,会出现大问题:
1 | POST /ssrf/post.php |
浏览器会无法识别你的请求;
所以想发送一个完整的POST数据包,这四个字段是不可缺少的
1 | POST /ssrf/post.php |
注意一点:使用脚本转的时候,每次不同的content-length都是不一样的,需要修改
这样就成功疗,SSRF的学习刚刚开始,开始记录一下