buuctf [2019红帽杯]easyRE

前言:学习笔记。(玩了几天。。)

 

常规:下载 解压 查壳

2ed6ac94a21f40cab91944d455c28d9c.png

64位 >>> 64IDAPro打开。

 

先看字符串,这个没有 main函数。

bcfb13335c864231b4534298e688171a.png

e9ae9219e8d744e7b8935077a6e88784.png

进去看看函数。

分析:

d719b4babc454192aff75c3b9e8e20c7.png

e31dd70015ba437fba01f274fdee4c28.png

汇编看>>>连续引用传送 说明 实际上其实就是数组。(v12=v12+v13+v14)

1436b560c30b4397a821a8b54560957e.png

进一步佐证。(v12为基地址。)

C脚本:(最好转为数值而不是直接使用字符。)

异或还原得到v15的值。

ee6016c0ba464e45847a89301a7ecf08.png

先不管,继续往下。

 

sub_400E44跟进:

8b2bc19c794c419aa1340fd3f3a1d792.png

敏感点会知道这是base64加密。(可以去查原理。)

df2606aaa5b44ee88018a34a52060bd5.png

把此前得到的base64拿去解密10次(在线工具或者python脚本都可以实现。)

4fde542cb2754947b1f702258ef3893a.png

咳,python 不太熟,但是有豆包妈,没事。。。 Y ^ T

0db1ac4716924628830509ace245f27c.png

这样解码一样可以(10次)。

 

是个网址。

6e6cfb4e4056447dab3c6723fcced7a1.png

没什么用,教学网址。

9c98aef47ea44969a145dc13aa97f31d.png

哈哈哈哈。

OK,综上,干扰信息。

回归原程序,慢慢找咯。

a94ec0ad4c5d48778b3b3c6794dc6ce5.png

fee2a36320eb4a2d8459685943234598.png

跟进看看。

3e759e0be0fb4727958ac61ca680a344.png

943f2394fe304e5287d93cf9a9561bc3.png

 

已知:

①        v1 ^ byte_6CC0A0[0]) == 'f' && (v4) ^  byte_6CC0A3) == 'g' 

        异或之后结果为f g 。

②        Info:The first four chars are `flag`》》》信息:前四个字符是`flag`(提示。)

 

③         byte_6CC0A0[j]    ^   *((_BYTE *)&v4 + j % 4))

        v4不知道。

 

④        for ( j = 0; j <= 24; ++j )

            byte_6CC0A0[j]

byte_6CC0A0其长度眼睛看,应该是3才对,而这24

>>> 说明又是干扰 

>>>实际应该是byte_6CC0A0 = byte_6CC0A0 + byte_6CC0A3。

 

综上整合:

v1 = v4 其字符长度为4。与byte_6CC0A0前4字符异或得到 ‘flag’ 

而后byte_6CC0A0[i] ^v4[j % 4]

 

C脚本:

#include <stdio.h>
#include <string.h>int main()
{//char v12[36] = { 0x49,0x6f,0x64,0x6c,0x3e,0x51,0x6e,0x62,0x28,0x6f,0x63,0x79,0x7f,//	0x79,0x2e,0x69,0x7f,0x64,0x60,0x33,0x77,0x7d,0x77,0x65,0x6b,0x39,0x7b,0x69,0x79,0x3d,0x7e,0x79,0x4c,0x40,0x45,0x43};//char v15[36] = {0};//for (int i = 0; i < 36; i++)//{//	v15[i] = v12[i] ^ i;//	printf("%c", v15[i]);//}	unsigned char byte_6CC0A0[] ={64,  53,  32,  86,  93,  24,  34,  69,  23,  47,36, 110,  98,  60,  39,  84,  72, 108,  36, 110,114,  60,  50,  69,  91,0};char flag[25] = "";char v4[] = "flag";for (int j = 0; j < strlen(v4); j++){v4[j] ^= byte_6CC0A0[j];}printf("v4->%s\n",v4);for (int i = 0; i <=24 ; i++){flag[i] = (byte_6CC0A0[i] ^ v4[i % 4]);printf("%c", flag[i]);}return 0;
}

160896f3c3984c2fa5e564f844a91ce9.png

3b1eac1bb84049bca74c660921585562.png

flag{Act1ve_Defen5e_Test}

 

总结:这题不难,考察点>>>  = = 细节、数组的分辨。 提取信息的能力。

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/402148.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机图形学 | 动画模拟

动画模拟 布料模拟 质点弹簧系统&#xff1a; 红色部分很弱地阻挡对折 Steep connection FEM:有限元方法 粒子系统 粒子系统本质上就是在定义个体和群体的关系。 动画帧率 VR游戏要不晕需要达到90fps Forward Kinematics Inverse Kinematics 只告诉末端p点&#xff0c;中间…

统计回归与Matlab软件实现上(一元多元线性回归模型)

引言 关于数学建模的基本方法 机理驱动 由于客观事物内部规律的复杂及人们认识程度的限制&#xff0c;无法得到内在因果关系&#xff0c;建立合乎机理规律的数学模型数据驱动 直接从数据出发&#xff0c;找到隐含在数据背后的最佳模型&#xff0c;是数学模型建立的另一大思路…

Unity游戏开发004:如何在Unity中对物体进行基本操作

Unity游戏开发 “好读书&#xff0c;不求甚解&#xff1b;每有会意&#xff0c;便欣然忘食。” 本文目录&#xff1a; Unity游戏开发 Unity游戏开发前言左侧工具栏概述1. **创建物体**2. **移动&#xff08;Move&#xff09;**3. **旋转&#xff08;Rotate&#xff09;**4. **缩…

科研单位所需要的文件自动同步备份软件具有哪些特征?

科研单位进行文件同步备份是保障数据安全、提高工作效率、符合法规要求以及实现数据共享与再利用的重要措施。文件同步备份不仅能保护科研单位的研究成果&#xff0c;还能提升工作协同效率&#xff0c;具体优势体现在&#xff1a; 预防数据丢失&#xff1a;科研单位在工作中会产…

Mysql视图整理

理论 初级语法及操作 操作基于navicat视图化&#xff0c;其他管理工具基本类似 参考即可 这里附上官网免费版下载链接&#xff1a;Navicat Premium Lite | 简单的数据库管理和开发工具 首先&#xff1a;选择选中数据库--》最上面的视图--》新建视图--》 我们可以看到这里&a…

Windows10配置FFmpeg和使用FFmpeg截取视频流视频

第一部分&#xff1a;Windows10配置FFmpeg 简介&#xff1a;FFmpeg是一个功能强大的多媒体处理工具(用于录制、转换和播放音频和视频)。可以进行转换、剪辑、拼接、过滤等操作。 1、下载FFmpeg工具&#xff08;分Windows和Linux其他&#xff09; Download FFmpeghttps://ffm…

奥威BI数据可视化展示:如何充分发挥数据价值

奥威BI数据可视化展示&#xff1a;如何充分发挥数据价值 在大数据时代&#xff0c;数据已成为企业最宝贵的资产之一。然而&#xff0c;仅仅拥有海量数据并不足以带来竞争优势&#xff0c;关键在于如何有效地挖掘、分析和展示这些数据&#xff0c;从而转化为有价值的洞察和决策…

Mysql(四)---增删查改(进阶)

文章目录 前言1.查询操作1.1.全列查询1.2.指定列查询1.3.列名为表达式查询1.4.查询中使用别名1.5.去重查询1.6.排序1.6.2.NULL 1.7.条件查询1.8.分页查询 2.修改3.删除 前言 上一篇博客&#xff0c;我们学习了一些主键的概念&#xff0c;并且分别创造了一些示例表&#xff0c;…

使用静态住宅代理解锁YouTube营销的新维度

YouTube作为众多跨境商家的重要营销推广阵地&#xff0c;YouTube的运营数据与店铺的开单息息相关。那么如何做好YouTube营销来增加产品的知名度呢&#xff1f;如何高效运营YouTube矩阵并防止账号间的关联呢&#xff1f;下文介绍的静态住宅代理就能在YouTube营销上助你一臂之力。…

使用 LabVIEW 编程更改 IMAQ/IMAQdx 接口的相机文件

问题详情 可能需要通过编程方式更改与 IMAQ/IMAQdx 接口关联的相机文件。这种需求通常发生在图像采集系统中&#xff0c;例如使用 PCIe-1433 硬件时&#xff0c;可能需要动态切换不同的相机配置文件来适应不同的应用场景。 解决方案 当前在 Measurement & Automation Ex…

Facebook国内企业户、海外户、国内二不限户以及三不限户区别何在?

Facebook广告账户的类型和设置对于企业在不同市场中的广告活动至关重要。了解国内企业户、海外企业户&#xff0c;以及国内二不限户和三不限户的区别&#xff0c;可以帮助你更好地选择和管理广告账户。以下是对这些账户类型的详细解析。 一、Facebook海外企业广告账户 海外企业…

卫星图像检测,分割,跟踪,超分辨率,数据集调研

卫星图像检测&#xff0c;分割&#xff0c;跟踪&#xff0c;超分辨率&#xff0c;数据集调研 超分辨率Image super-resolution: A comprehensive review, recent trends, challenges and applicationsA Review of GAN-Based Super-Resolution Reconstruction for Optical Remot…

Verilog基础:模块端口(port)定义的语法(2001标准)

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 Verilog中的端口定义有两种风格&#xff0c;一种是Verilog Standard 1995风格&#xff0c;一种是Verilog Standard 2001风格&#xff0c;本文将对Verilog Standar…

NoSQL之 Redis 配置与优化

Redis 数据库是一个非关系型数据库&#xff0c;在正式学习Redis 之前&#xff0c;先来了解关系型数据库 与非关系型数据库的概念。 关系数据库与非关系型数据库 1.关系型数据库 关系型数据库是一个结构化的数据库&#xff0c;创建在关系模型基础上&#xff0c;一般面向于记…

Mapreduce_partition分区入门

分区 将输入的csv按照员工号拆分成每个员工&#xff0c;每个员工存储为员工对象&#xff0c;之后按每个员工的不同部门存储 pom <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:x…

超越流水线,企业研发规范落地新思路

作者&#xff1a;子丑 内容大纲&#xff1a; 1、研发规范≠流程约束 2、自动化工具→研发规范载体 3、研发规范在工具上的落地示例 4、研发规范的选型方法与常见实践 研发规范≠流程约束 这个故事特别适合研发规范的场景&#xff0c;我们要避免成为把猫绑在柱子上的信众…

Java 垃圾回收,看一遍就懂

了解 Java 垃圾收集的工作原理并优化应用程序中的内存使用情况。详细了解 Java 中内存管理的复杂性。 垃圾收集是一个关键过程&#xff0c;可以帮助任何Java 开发公司。编程语言中的这一强大功能可以巧妙地管理内存分配和释放&#xff0c;防止内存泄漏并优化资源利用率。它就像…

Vue2移动端(H5项目)项目基于vant实现select单选(支持搜索、回显、自定义下拉label展示功能)

一 最终效果 二、参数配置 1、代码示例&#xff1a; <t-selectv-model"formData.materialNo"valueKey"materialNo"showLabel"materialName"labelKey"label"label"判定品级"input-align"right"placeholder&qu…

Docker-命令

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Docker架构二、Docker进程相关命令&#xff08;一&#xff09;启动 docker 服务&#xff08;二&#xff09;重启 docker 服务&#xff08;三&#xff09;停…

尚硅谷MYSQL(12-13章)

第十二章数据类型 比如说tinyint&#xff08;4&#xff09;这个四表示的是那个取值范围的位数 他只是一个显示 比如说int后面应该是int&#xff08;11&#xff09;这是有符号的 无符号int是int&#xff08;10&#xff09; 如果写成int&#xff08;3&#xff09;但是存的数据是…