zoukankan      html  css  js  c++  java
  • 利用PHP_SESSION_UPLOAD_PROGRESS进行文件包含

    我们可以利用session.upload_progress将木马写入session文件,然后包含这个session文件。不过前提是我们需要船家女一个session文件,并且知道session文件的存放位置。

    session里有一个默认选项,session.use_strict_mode默认值为off。

    此时用户是可以自己定义Session ID的。比如,我们在Cookie里设置PHPSESSID=flag,PHP将会在服务器上创建一个文件:/tmp/sess_flag”。即使此时用户没有初始化Session,PHP也会自动初始化Session,并产生一个键值.

    注:在Linux系统中,session文件一般的默认存储位置为 /tmp 或 /var/lib/php/session

    但是session.upload_progress.cleanup默认是开启的

    框着的这句话意思就是说在默认情况下,session.upload_progress.cleanup是开启的,一旦读取了所有POST数据,它就会清除进度信息

    这里我们可以利用条件竞争来进行文件上传

    下面讲个例题来实践一下:

    CTFshow 里web入门里的一个文件包含题

    通过观察代码,可以看到过滤了大部分的文件包含函数,这里我们利用PHP_SESSION_UPLOAD_PROGRESS加条件竞争进行文件包含

    以POST的形式发包,传的文件随意

    <!DOCTYPE html>
    <html>
    <body>
    <form action="http://e113b1bc-28b8-4f08-9e60-b74fe3a96ef3.chall.ctf.show/" method="POST" enctype="multipart/form-data">
        <input type="hidden" name="PHP_SESSION_UPLOAD_PROGRESS" value="123" />
        <input type="file" name="file" />
        <input type="submit" value="submit" />
    </form>
    </body>
    </html>
    

    抓包,这里我们添加一个 Cookie :PHPSESSID=flag ,PHP将会在服务器上创建一个文件:/tmp/sess_flag” (这里我们猜测session文件默认存储位置为/tmp),并在PHP_SESSION_UPLOAD_PROGRESS下添加一句话木马,修改如下

    因为我们在上面这个页面添加的ID值是flag,所以传参?file=/tmp/sess_flag

    修改如下:这个a是随便加的,主要是为了方便爆破

    条件竞争,将POST和GET的包都开启爆破,即可得到目录,

    可以看到有fl0g.php,只要把ls改为 cat fl0g.php即可,修改如下:

    爆破即可得到flag

  • 相关阅读:
    Oozie时bin/oozied.sh start或bin/oozied.sh run出现Bootstrap进程无法启动,http://bigdatamaster:11000/oozie界面也无法打开?
    [ACM] POJ 2253 Frogger (最短路径变形,每条通路中的最长边的最小值)
    Echoprint系列--Android编译与调用
    shell编程之文本与日志过滤
    C++中搜索、截取字符串
    Swift中的UIKit重力学
    hbase0.96 put流程 源码分析
    [Docker]初次接触
    工作日志2014-08-25
    Flex和Servlet结合上传文件报错(二)
  • 原文地址:https://www.cnblogs.com/NPFS/p/13795170.html
Copyright © 2011-2022 走看看