引言
本次分享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
本文作者:白玉京