引言
本次分享PolarCTF靶场中所有[easy]re题目的WP。
由于文章篇幅较长(一共有22道题目),分为两期发表,本期书接前文,分享下半部分内容,适合刚接触逆向的朋友。如果你也对逆向感兴趣,或者正在准备CTF比赛,希望这些内容能给大家一些帮助。
PolarCTF[C^]

64位ELF,直接运行:关键字符串“Please enter flag”

IDA启动!

fun1():a1[i] ^= 1u

check()用于判断a1是否和s相等:s = shfiu777

所以flag = shfiu777 ^ 1u
1 |
|
再md5,32位小写加密即可
PolarCTF[babyRE]

64位exe。运行以后发现,随便输入会输出“Err”

看眼endoce():对flag的每位+2

那flag是啥嘞:shift+f12里有一串诡异字符。可以试试

1 |
|
PolarCTF[easyre1]

64位ELF。运行发现:会输出”no no no”

IDA启动!

挨个看吧。
enkey():循环32次,134520896 + 96 = 134520992

看看这俩内容都是啥:
134520896: key = 5055045045055045055045055045055

134520992: flag的位置

所以enkey()就是让flag和key按位异或。
reduce():循环31次,flag每位都-1

check():对比flag和d^XSAozQPU^WOBU[VQOATZSE@AZZVOF

反过来就是:
d^XSAozQPU^WOBU[VQOATZSE@AZZVOF每位都+1然后和
key按位异或
1 |
|
PolarCTF[Sign Up]

64位exe。直接运行发现关键字符串。
IDA启动!


非常eazy啊,key_num[i]-1 = name; key_password[i]-2 = password
key_num = 192168109; key_password = root

1 |
|
检验一下:

拼接起来md5即可。
等等,不对?
原来是眼睛不好使,没注意人家只替换了7个数

1 |
|
这下对了!
PolarCTF[? 64]

64位可执行。

这,我猜是base64,直接在线解密试试:

赢!但是还是看看程序


遗憾!并不是base64的加密程序QAQ。收工
PolarCTF[Why32]

64位exe




这几个函数连起来的意思就是:input.len == 32
继续看Do()函数:input = cAry[i]-2; cAry = "2gfe8c8c4cde574f7:c6c;:;3;7;2gf:"

1 |
|
这个half right是什么意思呢?
不管了先直接包裹上flag提交试试,比较这个看起来很像md5加密之后的值。
豪德,不对。
解密试试呢?

F1laig。这下对了!
PolarCTF[康师傅]

32位exe。IDA直接跟进main函数

input[i] ^= 9u == str1[i]
太简单了哇!直接str1[i] ^= 9u就是flag了
1 |
|
PolarCTF[re2]

64位ELF,IDA直接启动。

PolarCTF[layout]

下载下来发现是apk。安装到雷电模拟器里看看。

疑似没做竖屏适配。调设置重启一下,发现还是乱码。
OK!上手段——jadx打开,直接搜索flag{

不对?!
好吧。回到雷电模拟器,用开发者助手提取:

这下对了
PolarCTF[use\_jadx\_open\_it]
这个名字——我听话,用 jadx 直接打开,然后搜索字符串:

结束
【未完成】****PolarCTF[另辟蹊径]

32位exe。但是注意:Section是乱码。丢进虚拟机里运行发现果然运行不了。
拽进ida里发现会创建一个新文件,感觉不对。 然后搜了一下writeup,好像这个文件有毒。暂停解题
PolarCTF[JunkCode]

32位可执行文件。IDA没看出名堂,进x64dbg试试。
根据题目名,猜测有很多无用代码,所以直接搜索字符串找到关键代码部分

简单分析(内容写注释里了):

分析认为junkcode.1F1258是判断函数:
调用该函数后,有个jump,一个会输出funny(疑似成功?),一个会输出”no”。
运行测试时,发现输错 flag 就会输出”no”

下断点准备跟进去看,结果发现eax里就是flag~
END
本文作者:白玉京