当前位置: 首页 > news >正文

CTF ssrf 基础入门 (一)

0x01 引言

我发现我其实并不是很明白这个东西,有些微妙,而且记忆中也就记得Gopherus这个工具了,所以重新学习了一下,顺便记录一下吧

0x02 辨别

我们拿到一个题目,他的名字可能就是题目类型,但是也有可能是个note或者是blog等等网站,那么下面讲一些常见的后端响应

file_get_contents

这个函数非常常见
用于读取文件

file_get_contents(string $filename, bool $use_include_path = false, resource $context = null, int $offset = 0, int $maxlen = -1)$filename: 必需参数,指定要读取的文件路径。
$use_include_path: 可选参数,默认为 false。如果设为 true,则会在 PHP 的 include 路径中搜索文件。
$context: 可选参数,是一个资源类型,通常用于指定文件句柄的上下文。例如,可以用来设置 HTTP 请求头(当读取远程文件时)。
$offset: 可选参数,指定从文件的哪个字节开始读取。
$maxlen: 可选参数,指定要读取的最大字节数。默认为 -1,表示读取到文件末尾

fsockopen()

这个东西就和python中的socket一样

fsockopen(string $hostname, int $port = -1, int &$errno = null, string &$errstr = null, float $timeout = ini_get("default_socket_timeout"))$hostname: 必需,指定要连接的主机名或 IP 地址。
$port: 可选,默认为 -1。指定要连接的端口号。
$errno: 可选,输出变量,用于存储发生错误时的错误号。
$errstr: 可选,输出变量,用于存储发生错误时的错误信息。
$timeout: 可选,默认使用 PHP 配置中的默认超时设置(default_socket_timeout)。指定连接超时时间(秒)。
<?php
$a=fsockopen('ip',port);
if($a){echo 1;
}else {echo 0;
}
?>

直接就弹shell还是行

curl_exec()

成功时,返回执行请求后得到的数据,通常是服务器响应的内容,格式依据请求和响应(如 HTML、JSON、图像数据等)。 失败时,返回
false。可以通过 curl_error() 获取错误信息。

怎么说呢相当于一个体系中的一个环节?然后返回响应,curl http://ceye

<?php
error_reporting(0);
highlight_file(__FILE__);
$url=$_POST['url'];
$ch=curl_init($url);  
curl_setopt($ch, CURLOPT_HEADER, 0);  //不要header值
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//返回数据为字符串
$result=curl_exec($ch);
curl_close($ch);
echo ($result);
?>POST:
url=http://127.0.0.1/flag.php

在这里顺便说说curl_setopt

curl_setopt(resource $ch, int $option, mixed $value)
$ch: 必需,由 curl_init 返回的 cURL 会话资源。
$option: 必需,要设置的选项常量。这些常量通常以 CURLOPT_ 开头,例如 CURLOPT_URL、CURLOPT_RETURNTRANSFER 等。
$value: 必需,要赋予选项的值。这个值的类型取决于所设置的选项。很有可能是个布尔值 ,1||0

0x03 绕过

前面看那几个函数看出来之后基本上就是技巧了

0x01 思路

首先思路要立正,我们是根据ssrf的漏洞去带出文件内容
所以我们传参肯定是传路径,并且是本地

0x02 本地

127.0.0.1
localhost
0
0.0.0.0
127.0.0
127。0。0。1
127\.0\.0\.1
127.1
sudo.cc      
0x7F000001		16进制
2130706433		十进制
0x7f.0.0.1          16进制
0177.0.0.1         八进制
ⓔⓧⓐⓜⓟⓛⓔ.ⓒⓞⓜ  >>>  example.com
List:
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳ 
⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇ 
⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛ 
⒜ ⒝ ⒞ ⒟ ⒠ ⒡ ⒢ ⒣ ⒤ ⒥ ⒦ ⒧ ⒨ ⒩ ⒪ ⒫ ⒬ ⒭ ⒮ ⒯ ⒰ ⒱ ⒲ ⒳ ⒴ ⒵ 
Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ Ⓙ Ⓚ Ⓛ Ⓜ Ⓝ Ⓞ Ⓟ Ⓠ Ⓡ Ⓢ Ⓣ Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ 
ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ 
⓪ ⓫ ⓬ ⓭ ⓮ ⓯ ⓰ ⓱ ⓲ ⓳ ⓴ 
⓵ ⓶ ⓷ ⓸ ⓹ ⓺ ⓻ ⓼ ⓽ ⓾ ⓿

0x03 vps

当本地在后端响应已经被过滤完之后,我们还可以用vps进行远程

demo

<?php
error_reporting(0);
highlight_file(__FILE__);
$url=$_POST['url'];
$x=parse_url($url);
if($x['scheme']==='http'||$x['scheme']==='https'){
$ip = gethostbyname($x['host']);//gethostbyname这个函数根据域名返回IP
echo '</br>'.$ip.'</br>';//将获得的IP显示在网页
if(!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {     //看ip是否为公网IPdie('ip!');
}echo file_get_contents($_POST['url']);
}
else{die('scheme');
}
?> 

利用header函数写一个文件

<?php header("Location:http://127.0.0.1/flag.php")?>

然后传参

POST:
url=http://ip/文件名

0x04 parse_url

<?php
var_dump(parse_url('https://www.example.com:8080/path/to/resource/index.html?key1=value1&key2=value2#section2'));
?>
这就是一个完整的urlarray(6) {["scheme"]=>string(5) "https"["host"]=>string(15) "www.example.com"["port"]=>int(8080)["path"]=>string(28) "/path/to/resource/index.html"["query"]=>string(23) "key1=value1&key2=value2"["fragment"]=>string(8) "section2"
}

这个函数非常便于我们去尝试出正确的能绕过的url

URL 中的 @ 符号在标准的 URL 格式中具有特殊含义,它用于分隔用户名(可选)和主机名。当 @ 出现在用户名和密码之后、主机名之前时,它用于指定访问资源时使用的身份验证凭据。例如:

http://ctf.@127.0.0.1/flag.php?showarray(5) {["scheme"]=>string(4) "http"["host"]=>string(9) "127.0.0.1"["user"]=>string(4) "ctf."["path"]=>string(9) "/flag.php"["query"]=>string(4) "show"
}

0x04 协议

Dict 协议dict://fuzz.wuyun.org:8080/helo:dict
Gopher 协议gopher://fuzz.wuyun.org:8080/gopher
File 协议file:///etc/passwd

有这三种,但是我还没用过,所以暂时不分享了
不过我不知道Gopherus这个工具算不算协议
gopherus
去下载之后,配置就不说了,我记得好像是go语言的环境
下载完就是大概这个东西
在这里插入图片描述

然后使用方法也很简单
在这里插入图片描述
mysql的

在这里插入图片描述
然后传参去RCE
Redis的
在这里插入图片描述

默认生成/var/www/html/shell.php
密码是自己写的1,然后RCE

相关文章:

CTF ssrf 基础入门 (一)

0x01 引言 我发现我其实并不是很明白这个东西&#xff0c;有些微妙&#xff0c;而且记忆中也就记得Gopherus这个工具了&#xff0c;所以重新学习了一下&#xff0c;顺便记录一下吧 0x02 辨别 我们拿到一个题目&#xff0c;他的名字可能就是题目类型&#xff0c;但是也有可能…...

IP地址在后端怎么存才好?

目录 一、地址的区别 二、字符串存取 2.1 IPV4空间大小 2.2 IPV6空间大小 三、整数存取 四、总结 4.1 字符串存取优缺点 4.2 整数存取的优缺点 一、地址的区别 在网络中&#xff0c;IP地址分为IPV4和IPV6&#xff0c;IPV4是一共占32位的&#xff0c;每8位小数点分隔&…...

《通讯世界》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答 问&#xff1a;《通讯世界》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的第一批认定学术期刊。 问&#xff1a;《通讯世界》级别&#xff1f; 答&#xff1a;国家级。主管单位&#xff1a;科学技术部 主办单位&#xff1a;中国科学技…...

go get的原理

1、GOPROXY 可以写在os的环境变量中&#xff0c;也可以写在go的环境变量中 GOPROXYhttps://goproxy.cn,direct 表示先去第一个网址下载&#xff0c;下载不到&#xff0c;就直接下载 也可以配置GOPRIVATE私有仓库&#xff0c;遇到私有仓库中的包&#xff0c;就直接下载 2、go…...

jenkins替换配置文件

1.点击首页的【Manage Jenkins】-【Manage Plugins】&#xff0c;在选项【Available plugins】安装 Config File Provider Plugin &#xff0c;安装后重启jenkins 2.安装完成后会有这个图标&#xff0c;点进去 3.点击新建&#xff0c;选择自定义&#xff0c;填入要替换的文件…...

C# Web控件与数据感应之 填充 HtmlTable

C# Web控件与数据感应之 填充 HtmlTable 在C#中&#xff0c;特别是在ASP.NET Web Forms应用中&#xff0c;你可能会遇到需要将数据动态填充到HTML表格&#xff08;HtmlTable&#xff09;中的场景。这通常涉及到遍历数据源&#xff08;如数据库查询结果、集合等&#xff09;&am…...

HAL库源码移植与使用之SPI驱动VS1053音频解码

你可以理解为带着dac adc芯片功能的集成芯片&#xff0c;声音的高低音形成由频率决定&#xff0c;大小声由波峰决定&#xff0c;所以采集时记录时间和电压值就可以确定高低音色和大小声&#xff0c;形成声音波形&#xff0c;再把波形用dac输出给喇叭&#xff0c;让喇叭在对应时…...

RK3568 Linux 平台开发系列讲解(内核入门篇):从内核的角度看外设芯片的驱动

在嵌入式 Linux 开发中,外设芯片的驱动是实现操作系统与硬件之间交互的关键环节。对于 RK3568 这样的处理器平台,理解如何从内核的角度构建和管理外设芯片的驱动程序至关重要。 1. 外设驱动的基础概念 外设驱动(Device Driver)是操作系统与硬件设备之间的桥梁。它负责控…...

初识C++ · AVL树(2)

目录 前言&#xff1a; 1 左右旋 2 右左旋 3 部分细节补充 3.1 单旋和插入 3.2 部分小函数 前言&#xff1a; AVL树作为一种结构&#xff0c;理解树的本身是不大难的&#xff0c;难的在于&#xff0c;树旋转之后的连接问题&#xff0c;写AVL树的代码大部分都是在旋转部分…...

LLM:归一化 总结

一、Batch Normalization 原理 Batch Normalization 是一种用于加速神经网络训练并提高稳定性的技术。它通过在每一层网络的激活值上进行归一化处理&#xff0c;使得每一层的输入分布更加稳定&#xff0c;从而加速训练过程&#xff0c;并且减轻了对参数初始化的依赖。 公式 …...

蓝桥杯 2024 年第十五届省赛真题 —— 最大异或结点

目录 1. 最大异或结点1. 问题描述2. 输入格式3. 输出格式4. 样例输入5. 样例输出6. 样例说明7. 评测用例规模与约定 2. 解题思路1. 解题思路2. AC_Code 1. 最大异或结点 1. 问题描述 小蓝有一棵树,树中包含 N N N 个结点&#xff0c;编号为 0 , 1 , 2 , ⋯ , N − 1 0,1,2,…...

AV1技术学习:Loop Restoration Filter

环路恢复滤波器&#xff08;restoration filter&#xff09;适用于64 64、128 128 或 256 256 像素块单元&#xff0c;称为 loop restoration units (LRUs)。每个单元可以独立选择是否跳过滤波、使用维纳滤波器&#xff08;Wiener filter&#xff09;或使用自导滤波器&#…...

如何使用python实现自动化办公?干货满满!

Python作为一种简单而强大的编程语言&#xff0c;不仅在数据科学和软件开发领域广受欢迎&#xff0c;还在办公自动化方面发挥了巨大作用。通过Python&#xff0c;我们可以编写脚本来自动执行各种重复性任务&#xff0c;从而提高工作效率并减少错误。在本文中&#xff0c;我们将…...

QT Creator下载安装详细教程(保姆级教程)

qt下载安装 1.下载网址 通过清华大学开源软件镜像站进行下载&#xff1a;链接: https://mirrors.tuna.tsinghua.edu.cn/qt/development_releases/online_installers/ 这里我选的是4.4版本的&#xff0c;也可以选择4.7版本&#xff0c;问题不大。 根据电脑系统选择下载linux…...

无人机公司销售需要什么资质

国家民航局于2024年1月1日实施了《无人驾驶航空器飞行管理暂行条例》&#xff0c;根据这个管理条例里面的 第十一条 使用除微型以外的民用无人驾驶航空器从事飞行活动的单位应当具备下列条件&#xff0c;并向国务院民用航空主管部门或者地区民用航空管理机构申请取得民用无人驾…...

代码自动化重构工具OpenRewrite介绍

OpenRewrite 是一个用于大规模自动化代码重构的开源框架&#xff0c;它极大地提升了开发人员的研发效率&#xff0c;通过自动化地进行代码重构和转换&#xff0c;帮助开发人员消除代码库中的技术债务。 通过 LST、访问器和配方的结合&#xff0c;OpenRewrite 能够实现准确的代…...

Win11安装Docker

下载Docker Desktop for Windows 下载 下载连接&#xff1a;Install Docker Desktop on Windows | Docker Docs 地址在国外&#xff0c;需要科学上网。也可使用我提供的&#xff0c;百度网盘&#xff1a;https://pan.baidu.com/s/1232TTkkzLsoZyFjC3bmgiQ 安装 下载完成之后…...

Windows电脑如何启动RTSP服务实现本地摄像头数据共享

技术背景 提起Windows共享本地摄像头&#xff0c;好多人想到的是通过ffmepg或vlc串流到服务器&#xff0c;实际上&#xff0c;用轻量级RTSP服务更简单&#xff0c;本文就介绍下&#xff0c;如何用大牛直播SDK的Windows轻量级RTSP服务&#xff0c;采集摄像头&#xff0c;生成本…...

探索 Spring WebFlux:构建响应式 Web 应用

探索 Spring WebFlux&#xff1a;构建响应式 Web 应用 随着互联网的发展&#xff0c;传统的同步编程模型已经难以应对高并发和高吞吐量的需求。为了解决这些问题&#xff0c;响应式编程逐渐成为主流。Spring WebFlux 是 Spring 5 引入的一个响应式 Web 框架&#xff0c;它基于…...

C# 植物大战僵尸

Winform 版本开发 高效率、流畅植物大战僵尸 git地址&#xff1a;冯腾飞/植物大战僵尸...

实时内存监控→自动降级→优雅回收:构建Python服务的自愈式内存管理闭环(附开源工具链)

第一章&#xff1a;Python智能体内存管理策略教程 Python智能体&#xff08;如基于LangChain、LlamaIndex构建的Agent&#xff09;在长时间运行、多轮对话或处理大上下文时&#xff0c;常面临内存泄漏、缓存冗余与引用滞留等问题。其内存管理不能仅依赖CPython的自动引用计数与…...

3步解决AEUX图层对齐问题的完整指南

3步解决AEUX图层对齐问题的完整指南 【免费下载链接】AEUX Editable After Effects layers from Sketch artboards 项目地址: https://gitcode.com/gh_mirrors/ae/AEUX AEUX作为连接设计工具与After Effects的桥梁&#xff0c;是设计师实现高效工作流的关键。然而在实际…...

TSMaster实战:基于UDS BootLoader的ECU刷写上位机开发指南

1. TSMaster与UDS BootLoader刷写基础 第一次接触汽车电子刷写的朋友可能会被一堆术语搞晕&#xff0c;让我用最直白的方式解释&#xff1a;ECU就像汽车里的小电脑&#xff0c;BootLoader是它的"恢复模式"&#xff0c;而UDS协议就是和它对话的语言。TSMaster这个国产…...

RC522 RFID模块SPI驱动开发与寄存器级控制实践

1. RC522 RFID读写模块底层技术解析与嵌入式驱动开发实践1.1 模块硬件架构与通信协议基础RC522 是 NXP&#xff08;恩智浦&#xff09;推出的高度集成非接触式射频识别&#xff08;RFID&#xff09;读写芯片&#xff0c;广泛应用于门禁系统、公交卡读取、物流追踪等嵌入式场景。…...

手搓LabVIEW声音采集系统——从调参到装X全攻略

Labview程序开发——声音采集系统 基于 Labview软件&#xff0c;以声卡为数据采集设备开发数据采集处理系统。 系统功能应包括: 1)声卡参数设置:包括设备ID号&#xff0c;采样模式&#xff0c;每通道采样点 数&#xff0c;采样率&#xff0c;通道数等参数设置; 2) 文件操作:实现…...

从PaddlePaddle 2.2.2平滑升级到2.4.2的实战指南

1. 升级前的准备工作 在开始升级PaddlePaddle之前&#xff0c;我们需要做好充分的准备工作。首先检查当前环境&#xff0c;确保系统满足升级要求。我建议创建一个新的Python虚拟环境来隔离升级过程&#xff0c;这样可以避免影响其他项目。使用conda创建环境的命令如下&#xff…...

ShaderGlass在OBS直播中的高级用法:打造视觉震撼的实时画面效果

ShaderGlass在OBS直播中的高级用法&#xff1a;打造视觉震撼的实时画面效果 【免费下载链接】ShaderGlass Overlay for running GPU shaders on top of Windows desktop 项目地址: https://gitcode.com/gh_mirrors/sh/ShaderGlass ShaderGlass是一款能在Windows桌面上运…...

AWS CloudFormation 安全最佳实践终极指南:IAM角色与策略配置完全解析

AWS CloudFormation 安全最佳实践终极指南&#xff1a;IAM角色与策略配置完全解析 【免费下载链接】aws-cloudformation-templates awslabs/aws-cloudformation-templates: 是一个包含各种 AWS CloudFormation 模板的存储库。适合查找和学习 AWS CloudFormation 模板的示例&…...

Qwen3-1.7B效果实测:轻量级模型也能写出高质量文案和代码

Qwen3-1.7B效果实测&#xff1a;轻量级模型也能写出高质量文案和代码 1. 开篇&#xff1a;小身材&#xff0c;大能量 你可能听过很多关于大模型的讨论&#xff0c;动辄几百亿、上千亿参数&#xff0c;听起来很厉害&#xff0c;但部署起来也让人头疼——需要昂贵的显卡&#x…...

从 Hugging Face 到本地:ProcessorMixin 模型保存与加载的完整指南

从 Hugging Face 到本地&#xff1a;ProcessorMixin 模型保存与加载的完整指南 在机器学习工程实践中&#xff0c;模型部署的最后一公里往往决定着整个项目的成败。当您花费数周时间在 Hugging Face 上精心训练出一个表现优异的模型后&#xff0c;如何将其安全、高效地迁移到生…...