73,【5】BUUCTF WEB [网鼎杯 2020 玄武组]SSRFMe(未解出)

进入靶场

又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码
<?php
// 检查 URL 是否为内部 IP 地址
function check_inner_ip($url)
{// 使用正则表达式检查 URL 格式是否以 http、https、gopher 或 dict 开头$match_result = preg_match('/^(http|https|gopher|dict)?:\/\/.*(\/)?.*$/',$url);// 如果 URL 格式不匹配,终止程序并输出错误信息if (!$match_result){die('url fomat error');}try{// 解析 URL$url_parse = parse_url($url);}catch(Exception $e){// 解析 URL 出错时终止程序并输出错误信息die('url fomat error');return false;}// 获取 URL 中的主机名$hostname = $url_parse['host'];// 将主机名解析为 IP 地址$ip = gethostbyname($hostname);// 将 IP 地址转换为长整型$int_ip = ip2long($ip);// 检查 IP 地址是否属于内部 IP 地址范围(127.0.0.0/8、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)return ip2long('127.0.0.0')>>24 == $int_ip>>24 || ip2long('10.0.0.0')>>24 == $int_ip>>24 || ip2long('172.16.0.0')>>20 == $int_ip>>20 || ip2long('192.168.0.0')>>16 == $int_ip>>16;
}// 安全请求 URL 的函数
function safe_request_url($url)
{// 检查 URL 是否为内部 IP 地址if (check_inner_ip($url)){// 如果是内部 IP 地址,输出信息echo $url.' is inner ip';}else{// 使用 cURL 初始化一个会话$ch = curl_init();// 设置请求的 URLcurl_setopt($ch, CURLOPT_URL, $url);// 设置将响应保存到变量而不是直接输出curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);// 不包含响应头信息curl_setopt($ch, CURLOPT_HEADER, 0);// 执行 cURL 请求$output = curl_exec($ch);// 获取请求的信息$result_info = curl_getinfo($ch);// 如果存在重定向 URLif ($result_info['redirect_url']){// 递归调用 safe_request_url 处理重定向 URLsafe_request_url($result_info['redirect_url']);}// 关闭 cURL 会话curl_close($ch);// 输出请求结果var_dump($output);}
}// 检查是否存在 url 参数
if(isset($_GET['url'])){$url = $_GET['url'];// 如果 url 参数不为空if(!empty($url)){// 调用 safe_request_url 函数处理 URLsafe_request_url($url);}
}
else{// 如果没有 url 参数,显示当前文件的源代码并进行语法高亮highlight_file(__FILE__);
}
// 请在本地访问 hint.php
?>
根据代码信息开始构造url
?url=http://127.0.0.1/hint.php


?url=http://0.0.0.0/hint.php

<?php
// 检查 REMOTE_ADDR 是否为 127.0.0.1,如果是,则显示当前文件的源代码并进行语法高亮
if($_SERVER['REMOTE_ADDR']==="127.0.0.1"){// 使用 highlight_file 函数将当前文件的源代码高亮显示highlight_file(__FILE__);
}// 检查是否通过 POST 方法提交了名为 file 的参数
if(isset($_POST['file'])){// 使用 file_put_contents 函数将一段 PHP 代码写入到 $_POST['file'] 指定的文件中// 写入的内容为:<?php echo 'redispass is root';exit(); 加上 $_POST['file'] 的内容file_put_contents($_POST['file'],"<?php echo 'redispass is root';exit();".$_POST['file']);
}
得到redis密码为root
可是redis是啥啊

https://www.freebuf.com/articles/web/293030.html
先看看上面这篇文章吧,我要好好理解理解
相关文章:
73,【5】BUUCTF WEB [网鼎杯 2020 玄武组]SSRFMe(未解出)
进入靶场 又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码又是代码 <?php // 检查 URL 是否为内部 IP 地址 function check_inner_ip($url) {// 使用正则表达式检查 URL 格式是否以 http、https、gopher 或 d…...
【FreeRTOS 教程 一】任务结构体及其基础创建使用
目录 一、任务与协程的区别: (1)任务的特点: (2)协程的特点: (3)总结: 二、任务概述 : (1)任务状态: &…...
深入剖析 JVM 内存模型
前言: 下面分别介绍了新生代和老年代的不同收集器及其相关子类型,并附有示例代码和说明,感兴趣的朋友可以参考一下。 简介: 在 Java 虚拟机(JVM)的世界里,内存模型是其核心架构之一࿰…...
解决DeepSeek-R1模型在Cursor中使用报错的问题
在使用Cursor时,如果你尝试调用DeepSeek-R1模型,可能会遇到以下报错信息: {"error": {"message": "deepseek-reasoner does not support successive user or assistant messages (messages[1] and messages[2] in …...
ASP.NET Core 6.0 如何处理丢失的 Startup.cs 文件
介绍 .NET 6.0 已经发布,ASP.NET Core 6.0 也已发布。其中有不少变化让很多人感到困惑。例如,“谁动了我的奶酪”,它在哪里Startup.cs?在这篇文章中,我将深入研究这个问题,看看它移动到了哪里以及其他变化。…...
Java如何向http/https接口发出请求
用Java发送web请求所用到的包都在java.net下,在具体使用时可以用如下代码,你可以把它封装成一个工具类 import javax.net.ssl.*; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.Outpu…...
数据分析 变异系数
目录 变异系数的应用场景包括: 特点: 注意事项: np.nanvar——方差,np.sanstd标准差 简单来讲就是平均值/标准差 变异系数(Coefficient of Variation, CV)是一种相对量的变异指标,常用于衡…...
利用免费GIS工具箱实现高斯泼溅切片,将 PLY 格式转换为 3dtiles
在地理信息系统(GIS)和三维数据处理领域,不同数据格式有其独特应用场景与优势。PLY(Polygon File Format)格式常用于存储多边形网格数据,而 3DTiles 格式在 Web 端三维场景展示等方面表现出色。将 PLY 格式…...
面试-二维数组
应用 快递业务有N个站点,1<N<10000;站点0、站点1可达,记作0-1;如果0-1、1-2,则站点0、站点2可达,记作0-2;s[i][j]1表示i-j可达,反之s[i][j]0表示i-j不可达;s[i][j…...
如何使用 findIndex() 方法查找数组中的第一个匹配元素的索引?
使用 findIndex() 方法查找数组中第一个匹配元素的索引 目录 简介findIndex() 方法概述如何使用 findIndex() 查找第一个匹配元素的索引 基本用法使用箭头函数和回调函数 实际项目中的代码示例 示例 1:查找第一个符合条件的用户索引示例 2:查找第一个符…...
5. 马科维茨资产组合模型+政策意图AI金融智能体(Qwen-Max)增强方案(理论+Python实战)
目录 0. 承前1. AI金融智能体1.1 What is AI金融智能体1.2 Why is AI金融智能体1.3 How to AI金融智能体 2. 数据要素&计算流程2.1 参数集设置2.2 数据获取&预处理2.3 收益率计算2.4 因子构建与预期收益率计算2.5 协方差矩阵计算2.6 投资组合优化2.7 持仓筛选2.8 AI金融…...
Centos类型服务器等保测评整/etc/pam.d/system-auth
修改服务器配置文件/etc/pam.d/system-auth,但是,把一下配置放在password的配置第一行才会生效 执行命令:配置口令要求:大小写字母、数字、特殊字符组合、至少8位,包括强制设置root口令! sed -i 14a pas…...
从工厂到桌面:3D打印制造潮玩手办
传统潮玩手办的制造过程复杂且成本高昂。从设计到成品,需要经过多道工序,包括手工建模、模具制作、注塑成型等。这一过程不仅耗时耗力,而且难以满足消费者日益增长的个性化需求。此外,传统制造方式对于小批量生产或定制化产品的经…...
Java高频面试之SE-16
hello啊,各位观众姥爷们!!!本牛马baby今天又来了!哈哈哈哈哈嗝🐶 Java中异常的处理方式有哪些? 在 Java 中,异常的处理方式主要有以下几种: 1. 使用 try-catch 语句 …...
三分钟简单了解一些HTML的标签和语法_01
1.图片建议建立一个文件夹如下图所示 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"keywords"><title>魔神羽落</title><style>.testone{background-color: #ff53e…...
缓存-Redis-数据结构-redis哪些数据结构是跳表实现的?
在 Redis 中,跳表(Skip List) 被用于实现 有序集合(Sorted Set) 数据结构。以下是对此实现的详细解释: Redis中的有序集合(Sorted Set) 有序集合(Sorted Set࿰…...
Linux 系统错误处理简介
Linux 系统错误处理简介 1. errno:错误代码的载体2. strerror():错误信息的翻译官3. perror():便捷的错误信息输出4. 系统调用与库函数的区别5. 错误处理的最佳实践 在 C/C 程序开发中,我们经常需要处理各种错误情况 Linux 系统提…...
逐笔成交逐笔委托Level2高频数据下载和分析:20250122
逐笔委托逐笔成交下载 链接: https://pan.baidu.com/s/1WP6eGLip3gAbt7yFKg4XqA?pwd7qtx 提取码: 7qtx Level2逐笔成交逐笔委托数据分享下载 通过Level2逐笔成交和逐笔委托这种每一笔的毫秒级别的数据可以分析出很多有用的点,包括主力意图,虚假动作&…...
第18个项目:微信开发入门:获取access_token的Python源码
源码下载地址:https://download.csdn.net/download/mosquito_lover1/90301829 功能特点: 输入AppID和AppSecret,点击按钮后异步获取access_token 1、自动保存功能: 当用户输入或修改 AppID 和 AppSecret 时自动保存 获取到新的 access_token 时自动保存 所有数据都保存在…...
如何将自己本地项目开源到github上?
环境: LLMB项目 问题描述: 如何将自己本地项目开源到github上? 解决方案: 步骤 1: 准备本地项目 确保项目整洁 确认所有的文件都在合适的位置,并且项目的 README.md 文件已经完善。检查是否有敏感信息࿰…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...
