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

  • 相关阅读:
    Mysql中使用FIND_IN_SET解决IN条件为字符串时只有第一个数据可用的问题
    Mysql中游标的使用
    xcode5下cocos2dx横竖屏设置
    VUE 小点 1
    绝对定位居中
    清楚float的方法4种
    socket模拟简单的服务器
    Django + Uwsgi + Nginx 的生产环境部署
    常见排序算法
    mro之C3算法
  • 原文地址:https://www.cnblogs.com/NPFS/p/13795170.html
Copyright © 2020-2023  润新知