• 利用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

  • 相关阅读:
    nmake不是内部或外部命令,也不是可运行的程序
    MinGW下载和安装教程
    Qt接单
    C++ web 框架
    原型链
    ssh: Could not resolve hostname的一种解决方案
    oracle客户端安装配置
    linux安装go
    golang 为什么结构体方法要写成指针传递
    traceback模块
  • 原文地址:https://www.cnblogs.com/NPFS/p/13795170.html
Copyright © 2020-2023  润新知