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

正在上传…重新上传取消

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

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

相关文章

学习大数据的第一天

今天学习如何安装hapood安装 1.安装hapood安装 2.需要的资料 3.开始安装 1.创建目录 mkdir -p /export/server 2.进入目录下 cd /export/server/ 3.安装 安装需要的依赖 yum install gcc gcc-c make autoconf automake libtool curl lzo-devel zlib-devel openssl opens…

算法与数据结构要点速学——排序算法

排序算法 所有主要的编程语言都有一个内置的排序方法。假设并说排序成本为 O(n*log n)&#xff0c;通常是正确的&#xff0c;其中 n 是要排序的元素数。为了完整起见&#xff0c;这里有一个图表&#xff0c;列出了许多常见的排序算法及其完整性。编程语言实现的算法各不相同&a…

DBUtils工具类的使用

1、DBUtils是什么 为了更加简单地使用JDBC&#xff0c;Apache组织提供了一个DBUtils工具&#xff0c;它是操作数据库的一个组件&#xff0c;实现了对JDBC的简单封装&#xff0c;可以在不影响数据库访问性能的情况下简化JDBC的编码工作量。DBUtils工具要有2个作用。 写数据&am…

光明与速度:AI网络中GPU与光模块的协奏曲

&#x1f3b6;在人工智能&#xff08;AI&#xff09;的世界里&#xff0c;GPU和光模块是实现高速计算和数据传输的关键。它们如同一场精心编排的交响乐&#xff0c;每个部分都不可或缺&#xff0c;共同创造出美妙的和谐。&#x1f3bc; GPU&#xff1a;AI网络的心脏&#x1f4…

创建一个javascript公共方法的npm包,js-tool-big-box,发布到npm上,一劳永逸

前端javascript的公共方法太多了&#xff0c;时间日期的&#xff0c;数值的&#xff0c;字符串的&#xff0c;搞复制的&#xff0c;搞网络请求的&#xff0c;搞数据转换的&#xff0c;几乎就是每个新项目&#xff0c;有的拷一拷&#xff0c;没有的继续写&#xff0c;放个utils目…

AJAX (异步的JavaScript 和 XML)

目录 1、什么是AJAX 2、作用 1&#xff09;与服务器通信 2&#xff09;异步交互&#xff08;更新局部页面&#xff09; 3、AJAX 的基本工作原理 4、应用举例 5、jQuery与AJAX 6、使用jQeury实现AJAX 1&#xff09;$.ajax()&#xff1a;发送异步请求 2&#xff09;$.g…

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…

解决npm install安装node-sass包容易失败的问题

具体问题如下&#xff1a; npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: XXX3.4.0 npm ERR! Found: webpack5.31.2 npm ERR! node_modules/webpack npm ERR! peer webpack”^4.0.0 || ^5.0.0″ from html-…

SpringBoot和Axios数据的传递和接收-Restful完全版

文章目录 一、基础知识铺垫Axios使用HTTP请求方式数据传输方式SpringBoot获取数据的方式 二、基础传递代码示例&#xff08;一&#xff09;Path Variables&#xff08;二&#xff09;Get、DeleteRequestParamModelAttribute &#xff08;三&#xff09;Post、Put、PatchRequest…

FreeRTOS学习 -- 中断配置

一、什么是中断 中断时微控制器一个很常见的特性&#xff0c;中断是由硬件产生&#xff0c;当中断产生以后CPU就会中断当前的流程而去处理中断服务&#xff0c;Cortex-M内核的MCU提供了一个用于中断管理的嵌套向量中断控制器&#xff08;NVIC&#xff09;。 二、中断优先级分…

土壤湿度传感器:助力农业现代化

随着科技的飞速发展&#xff0c;越来越多的先进技术被应用到农业生产中。其中&#xff0c;土壤湿度传感器作为现代农业的重要工具&#xff0c;正逐渐改变着传统农业的生产方式&#xff0c;成为农业现代化的秘密武器。 精确监测&#xff1a;土壤湿度传感器能够实时、精确地监测土…

WIN7用上最新版Chrome

1.下载WIN10最新版Chrome的离线安装包 谷歌浏览器 Chrome 最新版离线安装包下载地址 v123.0.6312.123 - 每日自动更新 | 异次元软件 文件名称&#xff1a;123.0.6312.123_chrome_installer.exe。 123.0.6312.123_chrome_installer.exe 文件右键解压缩得到 chrome.7z&#x…

树莓派3B长时间不操作屏幕息屏无信号处理

树莓派外接显示器&#xff0c;需长时间展示某个网页&#xff0c;经过一段时间&#xff0c;显示器屏幕会黑掉显示无信号。 需修改 /etc/lightdm/lightdm.conf 配置文件中新增如下两行并重启。 xserver-commandX -s 0 dpms sleep-inactive-timeout0

软考 - 系统架构设计师 - Web 应用真题(2)

问题 1&#xff1a; 淘汰策略&#xff1a;遗留系统技术含量低&#xff0c;业务价值也低&#xff0c;所以需要全面重新开发一个系统来替代遗留系&#xff1b;&#xff08;一般是企业的业务发生了根本变化&#xff0c;遗留系统已经基本不再适应企业运作的需要&#xff1b;或者是遗…

nextjs渲染篇

1 服务器组件 默认情况下&#xff0c;Next.js 使用服务器组件。 1.1 服务器组件是如何呈现的&#xff1f; 在服务器上&#xff0c;Next.js 使用 React 的 API 来编排渲染。渲染工作被拆分为多个块&#xff1a;按单个路段和Suspense 每个区块分两个步骤呈现&#xff1a; Re…

SQLite的PRAGMA 声明(二十三)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLite从出生到现在&#xff08;发布历史记录&#xff09;&#xff08;二十二&#xff09; 下一篇&#xff1a;用于 SQLite 的异步 I/O 模块&#xff08;二十四&#xff09; PRAGMA 语句是特定于 SQLite 的 SQL 扩…

Valorant 瓦罗兰特更新后进不去游戏?3个解决方法完美解决

Valorant 瓦罗兰特更新后进不去游戏&#xff1f;3个解决方法完美解决 《无畏契约&#xff08;VALORANT&#xff09;》是一款由知名游戏开发商&#xff08;Riot Games&#xff09;开发并且免费的多人射击游戏。游戏背景设定在一个幻想世界中&#xff0c;玩家将探索瓦罗兰大陆上…

基于python的二手房数据分析建模及可视化研究,爬取链家二手房数据,可视化分析,房价预测模型

介绍 主要涉及通过爬取济南市链家二手房数据&#xff0c;然后对数据进行处理&#xff0c;包括缺省值处理&#xff0c;高德地图获取二手房地址所属市区&#xff0c;经纬度等数据处理。然后通过python的flask框架编写后端接口&#xff0c;把数据响应给前端。然后前端通过AJAX请求…

谈谈微前端

相关问题 为什么要用微前端微前端的优缺点 回答关键点 独立开发 独立运行 独立部署 自治 微前端是一种架构理念&#xff0c;它将较大的前端应用拆分为若干个可以独立交付的前端应用。这样的好处是每个应用大小及复杂度相对可控。在合理拆分应用的前提下&#xff0c;微前端能…

【Java基础学习】面向对象编程

开始时间: April 10, 2024 结束时间: April 16, 2024 阶段: Done 基础部分 类与对象的关系 类是抽象的&#xff0c;概念的&#xff0c;代表一类事物对象是具体的&#xff0c;实际的&#xff0c;代表一个具体事物&#xff08;实例&#xff09;类是对象的模板&#xff0c;对象…