@TOC

写在前面

本次re题一共放了四道,ez_math和ez_code由大二学弟所出,其他的两道是我出的。
题目本着简单,有趣,快乐的思想,让大一的新生更友好的接触re这个方向,所以题目都不会太难(大二老油条请划走)

ez_math

附件打开是一个c语言源代码 不用任何工具直接分析即可
在这里插入图片描述在主函数里有着清晰的逻辑,对flag进行一系列加密后 与已知的字符串作比较,那么我们写解密脚本即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<stdio.h>
#include<string.h>
char a[100]={106, 112, 91, 105, 117, 79, 91, 120, 100, 97, 67, 109, 97, 71, 71, 71, 91, 109, 115, 127};
int main(){
for(int i=0;i<20;i++){
a[i]-=1;
a[i]-=2;
a[i]^=5;
a[i]+=1;
a[i]-=2;
a[i]+=5;
}
puts(a);

return 0;
}

在这里插入图片描述刚开始学习逆向的小朋友,可以把这个源代码编译一下,用ida打开 看看源代码和ida反编译出来的有什么不同,相信会有很多收获

ez_encode

正常的windows逆向 ,在用ida打开之前,可以试着运行一下,或者用exeinfo pe了解一下程序的大概样子和逻辑 有助于我们分析

这里直接ida打开 定位到main函数
在这里插入图片描述

考点在于sub_411294 这个函数的加密 我们点进去看一看
在这里插入图片描述
这串加密是典型的base64加密(不会的可以在网上阅读base64的源码)
识别base64最常用的方法就是 off_41a000这个码表
在这里插入图片描述
现在就可以理清程序逻辑
对输入的flag进行base64加密 然后每个字符加1 最后与已知的字符串比较
求解的话 直接把字符串每个减1 然后在线网站解就可以
在这里插入图片描述
在这里插入图片描述

game

这个题做出来的人我是万万没想到,我的预期解大概在10个以内,没想到都这么厉害
想着大一的同学什么也不会,放出来一个游戏题娱乐娱乐
在这里插入图片描述
游戏很简单,玩到两万分即可,游戏我是测试过的,原来设置的5000分,因为我觉得5000是我的极限了,后来按照他们的要求改成20000,我以为没人会玩通关(艹
预期解:打游戏
非预期解:特殊原因 一周后在放

easy_re

打开有个压缩包 和一共txt文档 分析txt文档就是压缩包的密码,所以首先要解txt
在这里插入图片描述这是一些汇编指令 看着很多代码,其实并不难,仔细阅读就会理清逻辑,本道题难点就在于解这个汇编代码,汇编代码的难点在于分析 pshufb这条指令

这个代码是原题改编 我换了部分数据,具体的解法可以参考我的另一条博客
https://yaoxixixi.github.io/2021/07/27/2021cybrics/

解出来 打开压缩包 里面的程序 和第一题差不多就是简单的异或 很好分析

写在后面

比赛做出来的人数还是挺多的,反正比我当时强很多,我大一还在踢球 打王者呢(逃
希望通过本次的题目可以把学弟学妹们引入ctf的大门 感受到比赛的乐趣,ctf本就是一个游戏,只不过我们在打游戏的同时,可以学到更多的知识,在享受比赛的乐趣的同时,更要让自己学的更广 更深 更长久
对于比赛题目还有不会的地方可以询问
大二的学长(比赛群的群主)
或者我(qq:2473648203)