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

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

先看看上面这篇文章吧,我要好好理解理解

 

 

 

http://www.lryc.cn/news/525036.html

相关文章:

  • 【FreeRTOS 教程 一】任务结构体及其基础创建使用
  • 深入剖析 JVM 内存模型
  • 解决DeepSeek-R1模型在Cursor中使用报错的问题
  • ASP.NET Core 6.0 如何处理丢失的 Startup.cs 文件
  • Java如何向http/https接口发出请求
  • 数据分析 变异系数
  • 利用免费GIS工具箱实现高斯泼溅切片,将 PLY 格式转换为 3dtiles
  • 面试-二维数组
  • 如何使用 findIndex() 方法查找数组中的第一个匹配元素的索引?
  • 5. 马科维茨资产组合模型+政策意图AI金融智能体(Qwen-Max)增强方案(理论+Python实战)
  • Centos类型服务器等保测评整/etc/pam.d/system-auth
  • 从工厂到桌面:3D打印制造潮玩手办
  • Java高频面试之SE-16
  • 三分钟简单了解一些HTML的标签和语法_01
  • 缓存-Redis-数据结构-redis哪些数据结构是跳表实现的?
  • Linux 系统错误处理简介
  • 逐笔成交逐笔委托Level2高频数据下载和分析:20250122
  • 第18个项目:微信开发入门:获取access_token的Python源码
  • 如何将自己本地项目开源到github上?
  • Windows远程连接Docker服务
  • 在Qt中实现点击一个界面上的按钮弹窗到另一个界面
  • 嵌入式知识点总结 ARM体系与架构 专题提升(一)-硬件基础
  • 全氟醚橡胶发展前景:高性能密封材料的璀璨之星
  • Android程序中使用FFmpeg库
  • Spring 依赖注入详解:创建 Bean 和注入依赖是一回事吗?
  • 【动态规划】落花人独立,微雨燕双飞 - 8. 01背包问题
  • 浅说树上差分——点差分
  • All in大模型!智能座舱语音交互决胜2025
  • windows git bash 使用zsh 并集成 oh my zsh
  • Git进阶笔记系列(01)Git核心架构原理 | 常用命令实战集合