SSRF题目进阶+SSRF正则绕过+进制绕过SSRF限制

[题目信息]:

题目名称题目难度
SSRF题目进阶3

[题目考点]:

SSRF绕过

[Flag格式]:

SangFor{h3bvbopR6L2EQOXv}

[环境部署]:

docker-compose.yml文件或者docker tar原始文件。

docker-compose up -d

[题目writeup]:

1、实验主页

2、可以判断该题目为代码审计题目

 <?php
if(isset($_GET) && !empty($_GET)){
    $url = $_GET['file'];
    $path = "upload/".$_GET['path'];
}else{
    show_source(__FILE__);
    exit();
}

if(strpos($path,’…’) > -1){
die(‘no!’);
}

if(strpos($url,‘http://127.0.0.1/’) === 0){
file_put_contents($path, file_get_contents($url));
echo “console.log($path update successed!)”;
}else{
echo “Hello”;
}

3、通读代码

1、需通过get方式传递两个参数,file和path。
2、$path变量中不能存在"..",如果存在程序结束die()。
3、倒数4、5、6行代码为本题关键代码。
4、首先限制$url必须以http://127.0.0.1/开头。
5、然后进入到IF条件语句中,file_put_contents函数为写文件,第一个参数为文件名,第二个参数为文件内容。
6、file_put_contents函数的第二个参数为file_get_contents函数,file_get_contents函数可以读取远程url地址的源码。
7、console.log控制台调试函数,将$path update successed!输出到网页上。

4、代码分析

1、我们可控变量$url和$path。$url必须以http://127.0.0.1/开头。
2、想要getshell必须通过file_put_contents函数写文件到服务器上,其中第一个参数直接可控,第二个参数file_get_contents函数的参数也可控,间接可控。
3、如果将$url赋值为http的地址,file_get_contens会发起http请求,该请求的起始是靶机服务器。
4、如果可以通过构造特殊的$url,控制file_put_contents的第二个参数,就可以获取服务器的权限,getshell。

5、尝试传递正常参数$file=http://127.0.0.1/,$path=xxx.php

6、console.log函数会将$path值打印出来,如果令$path为

$path = <?php phpinfo();?>

7、可以看到$path的内容被打印到网页的源代码中,综上所述

1、file_get_contents函数可以读取远程url地址的源码
2、file_put_contents第一个参数$path可控
3、file_get_contents中$url可控
4、如果通过控制$url,使file_get_contents访问结果如上图所示,那么就可以控制file_put_contens的第二个参数,获取服务器的权限。

8、payload

http://192.168.0.193:2005/?file=http://127.0.0.1/index.php?file=http://127.0.0.1/index.php%26path=<?php%2520phpinfo();?>&path=123xxx.php

9、PS:

由于存在两次请求,第一次为我们的物理机访问服务器靶机,第二次为file_get_contents函数产生的ssrf,由服务器访问服务器。因此需要将第二次url中关键字符,&符号url进行url编码,空格进行url二次编码。

10、访问/upload/123xxx.php,phpinfo函数已执行







[题目信息]:

题目名称题目难度
SSRF正则绕过

[题目考点]:

利用@符号绕过ssrf正则匹配

[Flag格式]:

SangFor{9RErqmXQ7va3efON}

[环境部署]:

docker-compose.yml文件或者docker tar原始文件。

docker-compose up -d

[题目writeup]:

实验主页

uploading.4e448015.gif

正在上传…重新上传取消

2、使用dirsearch扫描网站目录

python dirsearch.py -u http://192.168.0.193:2002/ -e php -t 20

3、扫描到文件flag.php,访问flag.php文件

4、提示仅可以本地访问

5、按照提示,尝试在网页输入框内输入深信服官网地址

uploading.4e448015.gif

正在上传…重新上传取消

uploading.4e448015.gif

正在上传…重新上传取消

6、返回结果为html实体编码,将返回结果复制,并保存在.html后缀的文件当中

uploading.4e448015.gif

正在上传…重新上传取消

7、可以看到题目的源代码

8、其中有一个关键函数parse_url()

parse_url() 函数可以解析 URL,返回其组成部分
$url = parse_url($_POST["handler"]);
$scheme = $url['scheme'];    #协议
$host = $url['host'];        #域名
$port = $url['port'];        #端口
$path = $url['path'];        #路径

9、parse_url()解析函数和curl解析url有所不同,下图为curl命令解析,解析@后域名

9、parse_url解析

10、通过解析方式的不同,构造如下payload








[题目信息]:

题目名称题目难度
进制绕过SSRF限制1

[题目考点]:

进制绕过SSRF限制

[Flag格式]:

SangFor{8wTFrFxSKMzXM3ng}

[环境部署]:

docker-compose.yml文件或者docker tar原始文件。

docker-compose up -d

[题目writeup]:

1、实验主页

2、使用dirsearch扫描网站目录

python dirsearch.py -u http://192.168.0.193:2002/ -e php -t 20

3、扫描到文件flag.php,访问flag.php文件

4、提示仅可以本地访问

5、按照提示,尝试在网页输入框内输入深信服官网地址

6、根据返回结果可以判断出,当在输入框内输入网站地址,服务端会尝试访问该地址,并返回响应内容

7、由于flag.php内容仅本地用户允许访问,因此在网页的输入框内输入:

8、提示禁止

9、尝试使用其他协议

10、提示仅可以使用http或者https协议

11、根据上述结果显示,可以初步判断,允许使用http或者https协议,但是不允许使用localhost,尝试使用127.0.0.1访问

12、同样不允许,尝试换成8进制访问

13、换成8进制时在177前需要加0,0177表示为8进制

uploading.4e448015.gif

正在上传…重新上传取消

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL的索引类型有哪些

MySQL的索引类型有哪些 MySQL数据库系统中的索引是用来加快搜索和检索数据库记录的数据结构。这些索引类似于书籍的目录&#xff0c;帮助MySQL快速定位数据表中的数据&#xff0c;而无需逐行扫描整个表。 索引解释 主键索引&#xff08;PRIMARY KEY&#xff09; 在MySQL中&…

2024五一杯数学建模C题思路分析

文章目录 1 赛题思路2 比赛日期和时间3 组织机构4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间&#xff1a;2024…

Linux中用户通过系统调用实现硬件驱动全流程

驱动全流程&#xff1a; 以基于设备树、Pinctrl、gpio子系统&#xff0c;打开一个字符设备为例&#xff1a; 1、通过系统调用open进入内核 当我们在用户空间调用open之后&#xff0c;应用程序会使用系统调用指令&#xff08;在上图中可看到&#xff0c;ARM架构中软中断汇编指…

【Qt】:网络编程

网络编程 一.UDP Socket1.回显服务器2.回显客户端 二.TCP Socket1.回显服务器2.回显客户端 三.HTTP Client1.常见的APL2.给服务器发送⼀个GET请求. 四.音视频 前置知识&#xff1a;网络。如果不了解&#xff0c;可以看我的博客网络部分。 在进⾏⽹络编程之前,需要在项⽬中的 .p…

使用两台主机实现博客的搭建

1.运行环境 这里的主机IP是自己虚拟器的IP。 主机主机名系统服务192.168.179.128Server-WebLinuxWeb192.168.179.129Server-NFSDNSLinuxNFS/DNS 2.基础配置 1.配置主机名&#xff0c;静态IP地址 2.开启防火墙并配置 3.部分开启SElinux并配置 4.服务器之间使用同ntp.aliyun.com…

设计模式之状态模式(下)

3&#xff09;共享状态 1.概述 在某些情况下&#xff0c;多个环境对象可能需要共享同一个状态&#xff0c;如果希望在系统中实现多个环境对象共享一个或多个状态对象&#xff0c;那么需要将这些状态对象定义为环境类的静态成员对象。 2.案例 背景&#xff1a;要求两个开关对…

本地做好准备上传到Git分支,发现git上已经更新了,上传到dev分支

git add . git commit -m 备注 git pull --rebase origin dev 拉取dev上的代码合并到本地 git push -u origin dev推到远程dev上&#xff08;注意着可能不是最后一步&#xff0c;先看完&#xff09; 如果报错&#xff0c;意思是本地没有dev分支&#xff0c;没办法上传到git上…

获取钉钉群的 chatId

1、地址 获取地址 在代码发钉钉的地方找到 corpId。 填上后&#xff0c;会出现一个二维码&#xff0c;使用钉钉扫描二维码&#xff0c;就会出现你所在的群&#xff0c;点击&#xff0c;就能获取到 chatId

数据结构——单链表(C语言版)

文章目录 一、链表的概念及结构二、单链表的实现SList.h链表的打印申请新的结点链表的尾插链表的头插链表的尾删链表的头删链表的查找在指定位置之前插入数据在指定位置之后插入数据删除pos结点删除pos之后的结点销毁链表 三、完整源代码SList.hSList.ctest.c 一、链表的概念及…

自定义鼠标软件 SteerMouse最新完整激活版

SteerMouse是一款实用的Mac OS X系统辅助工具&#xff0c;可以帮助用户自定义鼠标和触控板的设置&#xff0c;提高使用效率。它提供了多种功能&#xff0c;如自定义按钮、滚轮和光标速度&#xff0c;以及调整灵敏度等&#xff0c;使用户能够根据自己的需求和习惯进行优化。 Ste…

振弦式裂缝计安装指南:使用灌浆锚头安装法

振弦式表面裂缝计作为一种精密的测量设备&#xff0c;在土木工程、建筑结构监测等领域发挥着重要的作用。为了确保裂缝计能够准确、稳定地工作&#xff0c;其安装过程尤为重要。本文将详细介绍振弦式表面裂缝计灌浆锚头的安装步骤&#xff0c;帮助大家更好地完成安装工作。 步骤…

启明智显技术分享|HMI工业级芯片Model3(简称M3芯片)PSRAM使用指南及PSRAM溢出如何进行问题定位

Model3芯片简介&#xff1a; 启明智显发布的HMI工业级芯片Model3&#xff08;简称M3芯片&#xff09;是一款高性能的显示交互和智能控制 MCU&#xff0c;采用国产自主高算力 RISC-V 内核&#xff0c;内置片上 1MB 大容量 SRAM 以及 64Mb PSRAM&#xff0c;并提供丰富的互联外设…

李彦宏官宣第二届“文心杯”创业大赛,最高投资奖励翻5倍达5000万

4月16日&#xff0c;百度创始人、董事长兼首席执行官李彦宏在Create 2024百度AI开发者大会上宣布&#xff0c;第二届“文心杯”创业大赛正式启动&#xff0c;参赛选手有机会获得最高5000万人民币投资。 李彦宏在Create 2024百度AI开发者大会的演讲主题是“人人都是开发者”&…

伦敦站:电子科技大学2024年全球人才推介会诚邀学者报名参会!

2024年4月24日&#xff0c;电子科技大学访英代表团一行将在伦敦举办人才推介交流会。届时&#xff0c;电子科技大学嘉宾将现场推介学校办学和人才队伍建设情况&#xff0c;宣讲学校人才引进政策&#xff0c;并与参会学者进行互动交流与洽谈。现热忱欢迎伦敦及周边地区学者报名参…

怎么申请OV证书

不同于DV SSL证书申请只需要验证域名所有权&#xff0c;申请OV SSL证书除了会验证域名之外&#xff0c;同时还会对申请企业的组织信息进行验证。本篇就给大家介绍一下如何申请OV SSL证书。 目前DV SSL证书和OV SSL证书的区别还是比较大的&#xff0c;DV和OV的区别&#xff1a;…

红帽认证考试流程指导

参加红帽认证考试涉及以下三个流程帐号和证件的准备 考试信息的填写 证书关联与下载 帐号和证件的准备RHN 帐号注册 在参加红帽官方培训和认证考试前需要您提前注册好红帽帐号(RHN) 访问 此页面 &#xff0c;随后点击 Register for a Red Hat account 链接进行注册 注册时以下条…

BoostCompass( 查找功能实现 )

阅读导航 一、查找功能基本思路二、详细代码三、代码介绍四、运行结果 一、查找功能基本思路 通过实现一个基于倒排索引的搜索引擎&#xff0c;来提供高效、准确的搜索服务。其核心在于快速准确地从大量文档中检索出与用户查询关键词相关的文档&#xff0c;并按照相关性对结果…

【计算机考研】「软件工程」VS「电子信息」专硕有什么不同?

就今年的24国考来说&#xff0c;计算机技术&#xff08;085404&#xff09;能报的只是比计算机科学与技术少那么一点点&#xff08;因为“计算机类”它都可以报&#xff0c;只有写计算机科学与技术的报不了&#xff09;相对于其他天坑专业来说还是好很多的&#xff01; 本人双…

制造企业研发设计资源用共享云桌面集中管控有哪些优势?

在制造企业上云的过程中&#xff0c;因为它们多用3D设计软件&#xff0c;所以选择一款高效、稳定、安全的云桌面产品显得尤为重要。云飞云共享云桌面作为一种新型的云桌面产品&#xff0c;正逐渐受到越来越多制造企业的青睐。那么&#xff0c;制造企业为什么要选云飞云共享云桌…

PaddleOCR训练自己模型(2)----参数配置及训练

一、介绍 paddleocr分为文字定位(Det)和文字识别(Rec)两个部分 二、定位模型训练 &#xff08;1&#xff09;Det预训练模型下载&#xff1a;https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_det_train.tar &#xff08;2&#xff09;下载完之后&#xff0c;…