利用PHP_SESSION_UPLOAD_PROGRESS上传webshell

0x01 环境配置&利用条件

image-20210922091243957

image-20210924100930479

环境分析

  • session.use_strict_mode默认值为0,此时用户是可以自己定义Session ID

    我们在Cookie里设置PHPSESSID=flag,PHP将会在服务器上创建一个文件:/tmp/sess_flag
    
  • session.upload_progress.prefix由我们构造的session.upload_progress.name值组成,最后被写入sess_文件里。

所以:

  • 这个文件名是PHPSESSID=flag,文件名可控
  • 内容也是可以通过PHP_SESSION_UPLOAD_PROGRESS写入的
  • 如果有文件包含,就可以 getshell

一般情况还需要条件竞争

在默认情况下,session.upload_progress.cleanup是开启的
所以要是处理了所有POST数据,它就会清除进度信息,这个文件就没了

所以需要使用条件竞争:
要在没有处理完post数据的时候就要去触发

0x02 题目

这个题是第五空间CTF的一道WEB题

<?php

if(!isset($_GET['mode'])){
   
    highlight_file(__file__);
}else if($_GET['mode'] == "eval"){
   
    $shell = $_GET['shell'] ?? 'phpin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值