zoukankan      html  css  js  c++  java
  • gopher 协议初探

    Gopher 协议初探

    • 最近两天看到了字节脉搏实验室公众号上有一篇《Gopher协议与redis未授权访问》的文章,其中对gopher协议进行了比较详细的介绍,所以打算跟着后面复现学习一下,顺便记录一些身为菜鸡的我所遇到的比较蠢得坑

    Gopher协议

    • gopher协议是一种信息查找系统,他将Internet上的文件组织成某种索引,方便用户从Internet的一处带到另一处。在WWW出现之前,GopherInternet上最主要的信息检索工具,Gopher站点也是最主要的站点,使用tcp70端口。但在WWW出现后,Gopher失去了昔日的辉煌。现在它基本过时,人们很少再使用它。
    • 它只支持文本,不支持图像

    协议访问学习

    • 我们现在最多看到使用这个协议的时候都是在去ssrfredis shell、读mysql数据的时候,由于之前对这个协议了解不是很熟,所以这次看到这篇文章后打算借此学习一下他的通信方式
    • 首先最基础的看一下它如何发送get请求

    复现环境

    win10 + kali 2018 +

    • win10主机使用nc监听端口,nc -lvp 192.168.109.1:6666
    • 然后用kali使用curl gopher://192.168.109.1:6666/_abcd发送gopher get请求,可以发现_不会被显示
    • gopher协议格式:gopher://IP:port/_{TCP/IP数据流}
      gopher
      gopher

    发送http get请求

    • 在gopher协议中发送HTTP的数据,需要以下三步
    • 构造HTTP数据包
    • URL编码、替换回车换行为%0d%0aHTTP包最后加%0d%0a`代表消息结束
    • 发送gopher协议, 协议后的IP一定要接端口
    • curl gopher://192.168.109.166:80/_GET%20/get.php%3fparam=Konmu%20HTTP/1.1%0d%0aHost:192.168.109.166%0d%0a
    • get.php中写入<?php echo "Hello"." ".$_GET['param']." "?>
    • 此外自己本地测试时要注意将防火墙关掉
      gopher

    发送http post请求

    • POSTGET传参的区别:它有4个参数为必要参数
    • 需要传递Content-Type,Content-Length,host,post的参数
    • post.php中写入<?php echo "Hello".$_POST['name']." ";?>
    • 我这里复现的时候不知道什么原因一直无法将post的参数传入,最终只有这种效果
      gopher

    小结

    • 本次对于文章的学习基本对gopher协议有了一定的了解,对于文中后续的使用gopher实现redis未授权访问和ssrf还未进一步实现,这将是后续将要完成的任务,此外还有就是复现过程中出现post参数不能被接受的情况要想办法找一下问题原因和解决办法。
    • 有师傅知道原因的也希望能指点一下

    参考链接

  • 相关阅读:
    深入学习SlidingMenu 2015-06-12 20:27 856人阅读 评论(0) 收藏
    Android 判断SD卡是否存在及容量查询
    第三方登录,授权,分享
    GLSurfaceView用法详解
    Java/android面试题
    SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问
    填充数字以达到位数
    web api post
    .net测试方法效率获取系统当前时间
    vs2012更新问题
  • 原文地址:https://www.cnblogs.com/Konmu/p/12984891.html
Copyright © 2011-2022 走看看