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

buu easyRE

这道题目我想写的东西不是很多,前面的部分按常规流程走,第一步我们写逆脚本,推算出数组v15的值,但是输出值却没有啥用,只是告诉我们,the  first parts  are flag   ,没多大用,然后后面就是变表base64加密,加密了10,放到相关网站上去解密,得到了一个网址,那个网址是一篇看雪的文章,我看了一下,大概的意思就是,出题者要想做题者做不出题目来,就要将做题人带到沟里去,而不是在他们在按常规做题的路上设置障碍,那这道题就麻烦了,因为我们被带偏了,这道题难点就在这里,所以也只能去看wp了,发现关键点如下

我们双击进入这个数组,别问为啥,这是我一直忽略的一个关键点

关键点不在这个数组,而是在这个数组后面的那些未知数据,点击这个函数名,ctrl+x进入

f5反编译,转为c代码,如下

接下来就是分析这段代码,也不咋好分析,一大堆的干扰项,首先直接看if条件了,其他的不管,将两个数转为string形式,分别为f和g,再看byte_6cc0a0和byte_6cc0a3在名字上只差了三位,和flag差不多,首位f,末尾g,中间差三位,那由此我们可以逆推出v1和v4,但她两又是相互赋值的,所以她两等于一个数组,点进数组byte_6cc0a0提取四个数据出来,然后将他们和flag依次异或,得到四个数据,这个数据也就是下方for循环中的v4,v4有4为,j%4也有四种结果,刚好对应,那最后就上代码


#include<iostream>
using namespace std;
int main()
{int num[]= {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};int arm[] = { 0x40,0x35,0x20,0x56 };char rm[] = "flag";int cc[4];for (int k = 0; k < 4; k++){cc[k] = rm[k] ^ arm[k];//printf("%c", cc[k]);}for (int i = 0; i<=24; i++){num[i] ^= cc[i % 4];printf("%c", num[i]);}return 0;
}

非常规,难搞的分析,极多的干扰项,< ?_? >


http://www.mrgr.cn/news/63686.html

相关文章:

  • 【Redis】一种常见的Redis分布式锁原理简述
  • Linux·进程间通讯(管道)
  • std::optional与函数返回值的讨论
  • C语言中插入排序
  • Ubuntu使用Tesla P4配置Anaconda+CUDA+PyTorch
  • GaussDB Ustore存储引擎解读
  • pandas计算相关性并画热力图
  • 文件描述符fd 和 缓冲区
  • javaScript-----一维数组和数组对象去重的多种方法
  • 【数据结构】guard
  • 【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-10
  • 虚拟机 Ubuntu 扩容
  • 二十八、Python基础语法(面向对象-下)
  • C. Gorilla and Permutation
  • 打响反对人工智能的第一枪
  • 多处理机调度(李昂学长视频总结)25新增考点
  • 音视频入门基础:FLV专题(22)——FFmpeg源码中,获取FLV文件音频信息的实现(中)
  • 奇瑞不客气智驾 晚不晚?
  • 浅谈DDD(领域驱动设计)
  • 齐次线性微分方程的解的性质与结构
  • 云计算的优势及未来发展趋势
  • 【Leecode】Leecode刷题之路第37天之解数独
  • 1007:计算(a+b)×c的值
  • 事件的传递
  • java基础知识21 异常处理try与throw的相互处理e.getcause
  • 第一讲 递推与递归