[SUCTF2019]checkin

本文探讨了一道PHP文件上传题目,涉及IP加密文件夹、后缀检查、恶意代码检测及.htaccess间接操控。上传者尝试绕过限制,利用.normal.gif预加载文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一道简单的文件上传题。思路都比较常规,唯一碰到问题的就是如何对php进行解析。

源码如下,简单审计下:

<?php
// error_reporting(0);
$userdir = "uploads/" . md5($_SERVER["REMOTE_ADDR"]);
if (!file_exists($userdir)) {
    mkdir($userdir, 0777, true);//根据加密当前ip地址来取名一个文件夹
}
file_put_contents($userdir . "/index.php", "");//文件夹内添加一个空的php文件
if (isset($_POST["upload"])) {
    $tmp_name = $_FILES["fileUpload"]["tmp_name"];
    $name = $_FILES["fileUpload"]["name"];
    if (!$tmp_name) {
        die("filesize too big!");
    }
    if (!$name) {
        die("filename cannot be empty!");
    }
    $extension = substr($name, strrpos($name, ".") + 1);//取后缀
    if (preg_match("/ph|htacess/i", $extension)) {
        die("illegal suffix!");
    }
    if (mb_strpos(file_get_contents($tmp_name), "<?") !== FALSE) {
        die("&lt;? in contents!");//查看内容中是否有<?
    }
    $image_type = exif_imagetype($tmp_name);//取文件内容前几个字节判断文件是否为图片
    if (!$image_type) {
        die("exif_imagetype:not image!");
    }
    $upload_file_path = $userdir . "/" . $name;
    move_uploaded_file($tmp_name, $upload_file_path);
    echo "Your dir " . $userdir. ' <br>';
    echo 'Your files : <br>';
    var_dump(scandir($userdir));
}

把.htacess给禁用了,这里用到的是.user.ini来对文件进行一个php格式的解析。上传一个该文件且内容如下

GIF89a
auto_prepend_file=normal.gif

该语句意为当前文件夹中所有文件都将包含norma.gif文件。后面基本就是常规思路。传图片马,访问相关路径,再解析,最后rce

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值