[2019红帽杯]easyRE
新手一枚,如有错误(不足)请指正,谢谢!!
题目链接:BUUCTF-re-[2019红帽杯]childRE
题目下载:点击下载

IDA64位载入,shift+F12查看字符串,然后双击过去

"x"键交叉引用,切换到关键代码

F5反汇编显示
截取的部分代码

  int i; // [rsp+Ch] [rbp-114h]char str0[36]; // [rsp+60h] [rbp-C0h]char input1[32]; // [rsp+90h] [rbp-90h]int v16; // [rsp+B0h] [rbp-70h]char v17; // [rsp+B4h] [rbp-6Ch]char input2; // [rsp+C0h] [rbp-60h]char v19; // [rsp+E7h] [rbp-39h]char v20; // [rsp+100h] [rbp-20h]unsigned __int64 v21; // [rsp+108h] [rbp-18h]v21 = __readfsqword(0x28u);str0[0] = 73;str0[1] = 111;str0[2] = 100;str0[3] = 108;str0[4] = 62;str0[5] = 81;str0[6] = 110;str0[7] = 98;str0[8] = 40;str0[9] = 111;str0[10] = 99;str0[11] = 121;str0[12] = 127;str0[13] = 121;str0[14] = 46;str0[15] = 105;str0[16] = 127;str0[17] = 100;str0[18] = 96;str0[19] = 51;str0[20] = 119;str0[21] = 125;str0[22] = 119;str0[23] = 101;str0[24] = 107;str0[25] = 57;str0[26] = 123;str0[27] = 105;str0[28] = 121;str0[29] = 61;str0[30] = 126;str0[31] = 121;str0[32] = 76;str0[33] = 64;str0[34] = 69;str0[35] = 67;memset(input1, 0, sizeof(input1));v16 = 0;v17 = 0;v0 = input1;sub_4406E0(0LL, input1, 37LL);v17 = 0;v1 = input1;if ( sub_424BA0(input1) == 36 ){for ( i = 0; ; ++i ){v1 = input1;if ( i >= (unsigned __int64)sub_424BA0(input1) )break;if ( (unsigned __int8)(input1[i] ^ i) != str0[i] ){result = 4294967294LL;goto LABEL_13;}}sub_410CC0("continue!");memset(&input2, 0, 0x40uLL);v20 = 0;v0 = &input2;sub_4406E0(0LL, &input2, 64LL);v19 = 0;v1 = &input2;if ( sub_424BA0(&input2) == 39 ){v3 = sub_400E44(&input2);v4 = sub_400E44(v3);v5 = sub_400E44(v4);v6 = sub_400E44(v5);v7 = sub_400E44(v6);v8 = sub_400E44(v7);v9 = sub_400E44(v8);v10 = sub_400E44(v9);v11 = sub_400E44(v10);v12 = sub_400E44(v11);v0 = off_6CC090;v1 = (char *)v12;if ( !(unsigned int)sub_400360(v12, off_6CC090) ){sub_410CC0("You found me!!!");v1 = "bye bye~";sub_410CC0("bye bye~");}

先分析input1有关的代码,将用户输入与i异或后与在栈上存的数据进行比对
写脚本
然后知道flag前四位是flag
再分析与input2有关的代码

反复调用了sub_400E44()函数,查看后发现是base64加密,也就是进行了十次base64加密
可参考Base16,Base32,Base64编码详细学习

然后将编码后的字符串与off_6CC090处存放的字符串进行比对

编写脚本

查看网址……

参考wp

找到这段不随机的数据

发现其来自于sub_400D35函数
对sub_400D35函数进行交叉引用

发现来自.fini段的调用

而.fini段的解释是

此节区包含了可执行的指令,是进程终止代码的一部分。程序正常退出时,系统将安排执行这里的代码。

找到正确的关键代码

关键代码
v4^byte_6CC0A0[0] == ‘f’
v7 = v4
HIBYTE(v7)=HIBYTE(v4)=(*((_BYTE*)&(V4)+1))
也就是v4的下一位
byte_6CC0A3 也就是byte_6CC0A0[3]
因为第一次开始解出来flag开头是flag
可以推测就是判断v4的四位是不是与byte_6CC0A0前四位异或后等于’flag’
然后下面的异或应该是出flag的
写脚本

得出flag为flag{Act1ve_Defen5e_Test}

re学习笔记(25)BUUCTF-re-[2019红帽杯]easyRE相关推荐

  1. [2019红帽杯]easyRE writeup

    很想挑战难题,发现自己连writeup也看不懂 用64bit的ida打开,查找字符 找到函数: signed __int64 sub_4009C6() {signed __int64 result; ...

  2. 影像组学视频学习笔记(25)-查看准确度、灵敏度、特异度及混淆矩阵、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(25)主要讲解: 通过sklearn包输出准确度.灵敏度.特异度及混淆矩阵 基本概念 代码实现 from sklearn.metrics ...

  3. Li‘s 影像组学视频学习笔记(25)-查看准确度、灵敏度、特异度及混淆矩阵

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(25)主要讲解: 通过sklearn包输出准确度.灵敏度.特异度及混淆矩阵 基本概念 代码实现 from sklearn.metrics ...

  4. C#学习笔记——25个经典问题

    1.静态成员和非静态成员的区别? 2.const 和 static readonly 区别? 3.extern 是什么意思? 4.abstract 是什么意思? 5.internal 修饰符起什么作用 ...

  5. 学习笔记(25):Python网络编程并发编程-Thread其他属性和守护线程

    立即学习:https://edu.csdn.net/course/play/24458/296440?utm_source=blogtoedu 1.Thread其他的属性 CurrentThread( ...

  6. Spring Boot基础学习笔记25:RabbitMQ - 发布/订阅工作模式

    文章目录 零.学习目标 一.准备工作 (一)创建Spring Boot项目 - PublishSubscribeDemo (二)在应用属性文件里配置RabbitMQ 二.基于API进行消息发布和订阅 ...

  7. 安卓学习笔记25:常用控件 - 下拉列表

    文章目录 零.学习目标 一.下拉列表概述 1.继承关系图 2.常用属性和方法 二.教学案例--选择测试科目 (一)运行效果 (二)涉及知识点 (三)实现步骤 1.创建安卓应用[SelectSubjec ...

  8. 学习笔记25马氏链模型

    前段时间担任协会负责人,在搞matlab培训,又报了一堆竞赛.最近几个星期有空学习和记录.上次国赛全国二等奖的目标没达到,拿了个省一等奖,继续努力. 用已有的数据预测下一阶段某状态 只有两个状态 下面 ...

  9. 罗剑锋透视HTTP协议学习笔记---25 | 固若金汤的根本(下):数字签名与证书

    25 | 固若金汤的根本(下):数字签名与证书 黑客虽然拿不到会话密钥,无法破解密文,但可以通过窃听收集到足够多的密文,再尝试着修改.重组后发给网站.因为没有完整性保证,服务器只能"照单全收 ...

  10. 学习笔记(25):第一章: 路由与模板-Web前端技术与框架 5

    立即学习:https://edu.csdn.net/course/play/25568/305976?utm_source=blogtoedu JQuery的使用: 1.下载 2.练习使用 3.其余见 ...

最新文章

  1. Mac下安装的MySQL root账号无法登陆用户解决
  2. linux 使用 FIO 测试磁盘的iops
  3. rxjs里concatMap operators的用法
  4. MAC OS 命令行使用详解
  5. [HNOI2009]有趣的数列
  6. js获取页面URL地址并判断URL是否包含具体值
  7. SecureCRT 下载安装与连接(转)
  8. 【亲测】2022最新H5手机微商城运营源码/简约轻量版/对接支付个人免签接口/带搭建教程
  9. php在线电子小说网站毕业设计源码
  10. div+css三栏式布局
  11. win10 截屏 快捷键(全屏直接保存、全屏间接保存、当前界面)
  12. python requests 由于目标计算机积极拒绝,无法连接
  13. 工程总承包(EPC)项目经理培训项目背景介绍
  14. jpg转换成pdf转换器免费版哪个好
  15. 微信拼手气红包背后的算法逻辑
  16. 显卡的指标有哪些方面_显卡的几个主要的性能指标有()
  17. Crazy Number---3755
  18. 如何将电脑文件自动备份到u盘?
  19. ACM 各大OJ平台以及题目分类
  20. 洛谷P1606 Lilypad Pond G

热门文章

  1. 论文查重报告橙色和红色是什么意思?
  2. 虚拟仿真实训教学管理及资源共享平台虚拟实训开发对接文档
  3. android 模拟器后缀名,apk是什么文件?apk文件模拟器是什么?
  4. VirtualBox 磁盘扩容(亲测有效)
  5. exports is not defined
  6. mysql表名大小写设置
  7. java猜拳小游戏心得体会_java实现猜拳小游戏
  8. 第二人生的源码分析(101)脚本的初步知识
  9. 昌平二中2021高考成绩查询喜报,北京2021高考成绩排名榜单,北京各高中高考成绩喜报...
  10. cqyz oj | 【训练题】铲雪车问题