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

发现是Aspack壳,用工具脱壳:

32位:用IDA打开。直接shift+f12发现关键字符“Enter password:”

直接跟进函数看看:

关键函数:
sub_401738。继续跟进去看看:大概逻辑就是:
input逐个和0xC进行异或,然后和Str2进行比较所以
input = Str2 ^ 0xC

查看一下Str2 = >4i44oo4?i=n>:m;8m4=oo4i;>?4>h9m`` 

编写解密脚本:
1 |
|
PolarCTF[L00k_at_h3r3]

查壳发现是NsPack,用工具脱壳:

32位,用IDA打开。直接搜索函数,找到main函数:

很长,但实际上很简单,步骤大概是:
和几个数组逐个进行比较,且异或不同的数
例如第一个
for循环,input[i]和aNqt[i] ^ 0xBu的结果进行比较第二个
for循环,input[i+len(aNqt)]和aKixs[i] ^ 0xCu的结果进行比较…

aNqt = nqT
aKixs = kixS
aKa9jr = ka9jR
aHCq = h|>cQ
aG = g<}<
编写解密脚本:
1 |
|
PolarCTF[shell]
查壳发现是upx

工具脱壳:upx -d [FilePath]


32位,IDA打开,shitf+F12发现关键字符串。跟进去看看

F5反编译直接看到!

PolarCTF[PE结构]

不是PE文件?根据题目,大概可以猜到,是想让我们修复PE结构。winhex打开看看

上来就发现不是MZ!notepad++修改一下(别问为什么不是winhex,notepad用起来顺手一点QAQ)
再打开,发现OK了。

直接运行试试:

PolarCTF[拼接]

32位,直接用IDA打开,发现脸上就是main函数,手直接就挪F5上了啊!

嗯······这拼接在,嗯。哈哈。
PolarCTF[加加减减]

32位,IDA打开。main函数又在脸上,直接F5:

看眼逻辑:input每位都--,然后与str2进行比较。
所以str2每位都++,就是flag
1 | int main() { |

PolarCTF[HowTo\_LogIn]

upx壳,工具脱掉:

32位,因为是注册机,所以先运行看看:


OK,上IDA,搜索字符串看看:

跟进去发现关键:

pawd会被打印,所以可以x64嗯调到打印的地方? 哦不行,试了一下发现,只会打印输入的东西,还是得自己对照QAQ
复制下来试试:
1 |
|

运行检验一下:

哦对,邮箱要有@,且@后面有字符,有.,且.后面要有字符。反正写规范一点,直接123会被拦截
tip:最终密码要进行32位md5加密哦
flag{c3ec13a01b07ad218dbd5f4bbab592b9}
PolarCTF[box]

64位ELF。进kali看看:

程序入口是key2。IDA,启动!

跟进去发现,key2=str1,str1 = that_ok = key2


接着找谁调用了key2(),找到main函数



直接复制下来,运行一下发现:key1 = 11694441,key3 = NNSXS===

拼起来:flag{11694441that_okNNSXS===}
啊?不对。
草,key3需要base32解密,结果为:key 所以:flag{11694441that_okkey},再进行md5,32位小写加密即可
PolarCTF[crc]

64位ELF,进kali看看:发现没有任何输出,直接等你输入。
好吧,那IDA启动!

简单分析一下strmncpy函数:

简单分析一下magic函数:

查找发现,python的binascii库和zlib库有crc32
因为flag的前4位包是flag,所以可以试试:flag加密后是否和0xd1f4eb9a相等,看看python库里的crc32的实现是否和这题的实现一致。

OK!可以开始爆破了
1 | import binascii |

拼起来:flag{ezrebyzhsh}
PolarCTF[EasyCPP2]

64位ELF。直接运行发现:没有任何输出,直接等你输入。
IDA启动:

看了眼flag = qisngksofhuivvmg
再看眼encode():+=3再^6=1u

所以对flag = qisngksofhuivvmg进行encode()就是我们的input
1 |
|
PolarCTF[一个flag劈三瓣儿]

64位ELF,直接运行:flag{HaiZI233N145wuD!le112@666}

啊?真这么简单wow