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']."\n"?>
  • 此外自己本地測試時要注意將防火牆關掉
    gopher

發送http post請求

  • POSTGET傳參的區別:它有4個參數為必要參數
  • 需要傳遞Content-Type,Content-Length,host,post的參數
  • post.php中寫入<?php echo "Hello".$_POST['name']."\n";?>
  • 我這里復現的時候不知道什么原因一直無法將post的參數傳入,最終只有這種效果
    gopher

小結

  • 本次對於文章的學習基本對gopher協議有了一定的了解,對於文中后續的使用gopher實現redis未授權訪問和ssrf還未進一步實現,這將是后續將要完成的任務,此外還有就是復現過程中出現post參數不能被接受的情況要想辦法找一下問題原因和解決辦法。
  • 有師傅知道原因的也希望能指點一下

參考鏈接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM