还是天枢的一道CTF题,启程!
 
    分析题目,自己注册账户并登陆后,提示输入一个url,网站会自己运行查找网页信息。

    emmmmm,很挑衅,网站就当作服务器,我们在url框中输入一个伪造的执行代码,让他运行获取到机密信息,哼哼。这就是SSRF(服务端请求伪造),伪造的代码留给服务端自己执行并返回我们需要的机密信息。
    在里面乱输入了一些东西,没有任何反馈。此时,我们就要扫描网站啊。
 
1.扫描网站+分析robots.txt
    使用御剑扫描网站。眼尖得很,看到了“robots.txt”文件。
    robots.txt是一个纯文本文件,它会告诉引擎搜索器哪些资源能搜索,哪些不能。语法如下:
User-agent: * 星号说明允许所有搜索引擎收录
Disallow: index.php? 表示不允许收录以index.php?为前缀的链接,比如index.php?a=12
Disallow: /tmp/ 表示不允许收录tmp目录及其里面的文件,如/tmp/1.html
    来,愉快地查看robots.txt。如下图所示

    嗯呢,不让搜索这俩东西,那就看这俩里面有啥好东西。
 
2.分析隐藏文件/backup/*和phpinfo.php
    在backup/里面看到一个sql文件,emmmmmmmm,或许存储了有关用户的信息。打开看看。

    看到了,用户名和密码。yeeah

    尝试登陆。有了提示信息,限制了登录的IP和端口。
 

    回想到前面的url框,可以在用已注册用户登录后,在url框中输入伪造的网页登录信息,从而成功用admin用户登录。
 
    第二个隐藏文件phpinfo.php一定隐藏了什么重要的东西。看看

    gopher扩展件是启动着的。它是什么?
    Gopher是Internet上一个很有名的信息查找系统,它将Internet上的文件组织成某种索引,很方便用户获取。Gopher协议使得Internet上的所有Gopher客户程序能够与已注册的Gopher服务器对话。
    它的使用格式是 gopher://URL。
    在SSRF中经常会使用Gopher来构造POST包攻击应用。
 
3.使用Gopher协议构造POST包
    Gopher协议没有默认端口,需要制定POST方法,回车换行使用%0d%0a,参数之间的分隔符也用URL编码,其他与HTTP协议类似。
    本题中,先根据HTTP协议,构造的结果表示按照要求登录admin用户,如下:
gopher://127.0.0.1:80/_POST /index.php?action=login HTTP/1.1
Host:127.0.0.1:1000
Cookie:PHPSESSID=1f546328759632456215236845122365;
Connection:close
Content-Type:application/x-www-form-urlencoded
Content-Length:null
Transfer-Encoding:chunked
 
username=admin&password=bupt666
    其中,必须要有Content-Type,它有两种值:“ application/x-www-form-urlencoded”和“ multipart/form-data”,它主要用于传输参数。如果没有它,参数就不能正常传输。
              这里phpsessid模仿访问此网站获得的phpsessid随机制作一个即可。例如,此处随机访问网站,

    获取到的phpsessid是8ef96c599289cae82a714af4afafc793,模仿写出一个数位一样的当做phpsessid,可以是1f546328759632456215236845122365。
    经过多次URL编码的结果为:
gopher://127.0.0.1:80/_POST%20%2findex.php%253Faction%3Dlogin%20HTTP%2f1.1%250d%250aHost%3A%20localhost%3A1000%250d%250aCookie%3A%20PHPSESSID%3D1f546328759632456215236845122365%3B%250d%250aConnection%3A%20close%250d%250aContent-Type%3A%20application%2fx-www-form-urlencoded%250d%250aContent-Length%3A%2031%250d%250a%250d%250ausername%3Dadmin%26password%3Dbupt666
    此处有些地方经过了多次URL编码,我实在看不出来奥妙,这是个问题,估计要很深的功底才能办到。
    
4.利用POST包登录admin账户获取flag
    此处的逻辑是,首先使用已注册普通用户登录,在【URL】框中输入POST包,此时POST包中的phpsessid成为admin用户的phpsessid,里面储存了admin用户的所有登录信息。根据题目本身可知,在登陆界面因为IP和端口的限制不能直接登录admin用户,所以先登录普通用户,拦截普通用户的一个请求包,将它的phpsessid修改为admin用户的phpsessid,这样就绕过了登录时的拦截,将普通用户替换为admin用户登录,成功获得flag。

    点击【Forward】,又返回信息,说明跳转页面成功,admin账户成功登录了,那个phpsessid已经成为admin用户的唯一标识。如下图所示

    之后随便登录一个已注册用户,将admin用户的唯一标识phpsessid输入进去,即可获得flag。如下图所示、

    点击【Forward】,获得flag。
 

 
 
 
 
 
 
 
 
 
 
 
 

SSRF攻击-运用gopher协议构造POST包--emmmm(http://10.112.68.215:10004/index.php?action=login)的更多相关文章

  1. Gopher协议在SSRF漏洞中的深入研究

    如果需要大佬写好的脚本,可以直接去github上面搜 参考文章:https://zhuanlan.zhihu.com/p/112055947 https://www.cnblogs.com/Konmu ...

  2. gopher协议在SSRF漏洞中的作用

    1.什么是gopher协议?2.如何使用gopher协议反弹shell?3.在SSRF中如何使用gopher协议反弹shell? 一.什么是gopher协议?定义:Gopher是Internet上一个 ...

  3. CTFHUB之gopher协议实现SSRF

    介绍 解题思路: 利用302协议(重定向)的跳转ssrf.可以访问与服务器相连的内网 ①什么是gopher协议 Gopher是Internet上一个信息查找系统,它将Internet上的文件组织成某种 ...

  4. SSRF攻击实例解析

    ssrf攻击概述 很多web应用都提供了从其他的服务器上获取数据的功能.使用用户指定的URL,web应用可以获取图片,下载文件,读取文件内容等.这个功能如果被恶意使用,可以利用存在缺陷的web应用作为 ...

  5. gopher 协议初探

    Gopher 协议初探 最近两天看到了字节脉搏实验室公众号上有一篇<Gopher协议与redis未授权访问>的文章,其中对gopher协议进行了比较详细的介绍,所以打算跟着后面复现学习一下 ...

  6. 网络编程之tcp协议以及粘包问题

    网络编程tcp协议与socket以及单例的补充 一.单例补充 实现单列的几种方式 #方式一:classmethod # class Singleton: # # __instance = None # ...

  7. scapy构造数据包

    一.进入scapy交互界面 在终端下输入:scapy ,进入交互界面: 二.查看scapy已经实现的网络协议 ls() 列出scapy中已实现的网络协议 ls(协议类型) 查看某个协议头部字段格式 l ...

  8. 网络安全学习阶段性总结:SQL注入|SSRF攻击|OS命令注入|身份验证漏洞|事物逻辑漏洞|目录遍历漏洞

    目录 SQL注入 什么是SQL注入? 掌握SQL注入之前需要了解的知识点 SQL注入情况流程分析 有完整的回显报错(最简单的情况)--检索数据: 在HTTP报文中利用注释---危险操作 检索隐藏数据: ...

  9. 实战录 | 基于openflow协议的抓包分析

    <实战录>导语 云端卫士<实战录>栏目定期会向粉丝朋友们分享一些在开发运维中的经验和技巧,希望对于关注我们的朋友有所裨益.本期分享人为云端卫士安全SDN工程师宋飞虎,将带来基于 ...

随机推荐

  1. linux驱动开发( 五) 字符设备驱动框架的填充file_operations结构体中的操作函数(read write llseek unlocked_ioctl)

    例子就直接使用宋宝华的书上例子. /* * a simple char device driver: globalmem without mutex * * Copyright (C) 2014 Ba ...

  2. Java设计模式——合成/聚合复用原则

    一.什么是合成/聚合复用原则? 合成/聚合复用原则是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分:新的对象通过向这些对象的委派达到复用已有功能的目的. 简述为:要尽量使用合成/聚合,尽 ...

  3. Vue router 的使用--初级

    在说 VueRouter 之前,首先要弄明白vueRouter 是干什么的,有什么用 说出来其实很简单,就是一个模板替换的问题,当路由改变的时候,把和路由相关的模板显示出来,就是这么简单.但是,当我们 ...

  4. jquery接触初级-----juqery选择器实例

    jquery 选择器用于触发事件,可以少写很多js代码,一般来说,基本的特效功能都能够完成 这里列举一个简单的jquery写的例子: 要求:有两种情况: 1.产品最初状态显示简约形式的品牌,即显示部分 ...

  5. 2018SDIBT_国庆个人第四场

    A - A  这题很巧妙啊,前两天刚好做过,而且就在博客里  Little C Loves 3 I time limit per test 1 second memory limit per test ...

  6. How to Pronounce the Idiom: ‘Out Like a Light’

    How to Pronounce the Idiom: ‘Out Like a Light’ Share Tweet Share Tagged With: Idioms English is full ...

  7. Spring+Quartz 实现定时任务的配置方法

    Spring+Quartz 实现定时任务的配置方法 整体介绍 一.Quartz介绍 在企业应用中,我们经常会碰到时间任务调度的需求,比如每天凌晨生成前天报表,每小时生成一次汇总数据等等.Quartz是 ...

  8. Chrome 不能访问tensorboard解决

    Chrome 不能访问tensorboard解决 Run: Cmd Result: C:\Users\think>tensorboard --logdir=C:\Users\think\sour ...

  9. Javascript中的this之我见

    来源:http://www.blogjava.net/baoyaer/articles/105864.html 在面向对象编程语言中,对于this关键字我们是非常熟悉的.比如C++.C#和Java等都 ...

  10. C#中属性和字段的区别

    属性和字段的区别 在C#中,我们可以非常自由的.毫无限制的访问公有字段,但在一些场合中,我们可能希望限制只能给字段赋于某个范围的值.或是要求字段只能读或只能写,或是在改变字段时能改变对象的其他一些状态 ...