首页
社区
课程
招聘
[原创]网络安全公益赛RE
发表于: 2020-2-26 00:31 7177

[原创]网络安全公益赛RE

2020-2-26 00:31
7177

本来是一名pwn选手。可能因为疫情的关系,最近不务正业喜欢上了搞逆向,真的是消磨时间的神器,一道题玩一天不是梦,而且感觉看反汇编代码更有感觉了XD。题目都放在附件里了,对于大佬来说应该都不难,不过对于我这种基础差的还是比较有挑战性的。
比赛持续三天,一共11道逆向,赛后我又连着肝了两天,感觉踏上了修仙的路,一共搞出来九道半的题目,还有一个太难了。下面分享一下我的解题思路。

VM题目,而且是极其规范的那种,所以直接用angr梭哈了:

flag{vm_is_not_easy}

可以对文件进行加密,不过测试发现只能加密16个字节,后面都是明文。程序被ollvm混淆过,本来想用现成的脚本解混淆,结果angr版本总是有问题。后来直接IDA里硬看,其实也很容易找到逻辑,AES的ECB加密而已,flag最后是个png。

flag{3ff32148-e229-41fd-b7b9-d09e76d35daf}

日常消费卢老爷,程序是用QT写的,一开始OD里找不到关键点,所以我就跑到IDA里慢慢找,发现0x402150是关键函数。然后OD调到对应位置,输入”lubenwei“,“abcd”,在经过一些处理后有加密结果,怎么加密的并不用关注,只要看到最后的比较过程就可以了。看到此时EDI是我们的输入转化而成,EAX就是对应的结果,直接输入这段结果就行。

flag{41d26f00}

程序逻辑大致为把输入进行处理作为key,之后对key进行某些验证,然后对一段密文进行xxtea解密。其他的部分并不用关心,因为这些本来就不是我们控制的。
sub_7FF6E5231890找到对key进行判断的算法,只要让其绕过you are wrong!这里就行了,后面的不用关注。
把算法模拟了出来,爆破就可以找到key,这道题比赛的时候本来可以做出来,不过因为比赛的时候只爆了八个字节,结果绕过了检测导致后面解密失败,之后才发现原来是九个.

会出现好几个结果,最后在输出下断点依次尝试,最后发现8ab86897是正确的:

flag{8ab86897-25c9-811a-ce9a-18547ae6801e}

真 病毒分析,模拟DNA的序列配对,其实是在做简单的单表替换。最后三个字符一组会产生固定的字符串,但是固定的字符串对应的输入可能有多个,这里需要爆破。
这个写得有点粗糙,可能有的情况被不小心遗漏了,而且速度很慢了.

flag{AUGUGCCUUGCAAGACUUUUCUCGAUACUUAACGUCUGUGGAAAACUUUAA}

安装过程中会要求输入密码,不过即使错误也可以解压,解压后的文件是NES模拟器,就是PC机上模拟FC游戏的,还带了个赤色要塞文件hhh,应该是在安装包里搞了一些操作,有点难调。
后来发现这个东西叫NSIS,file命令可查,用1505的7zip就可以提出来脚本。
key是明文,不过也没啥用:

NSIISSOEASY

nsis的脚本跟汇编类似,所以也能明白个大概:

第二个函数在我眼里基本啥也没干,应该是想实现字符转ascii码把,所以其实就是简单的异或1而已:

flag{e696a6cc-f63e-483c-9af0-bf87902d9eaa}

因为SEH的机制,IDA的F5会显示得很奇怪,大段地逻辑是无法看到伪C的,所以就OD+IDA看汇编硬做,差不多玩了一天XD。
不过看反汇编的代码可以看到代码的逻辑,loc_4154A1应该是函数的主要逻辑,OD里可以调试,注意这里会先弹出hook再跳转到这里。
说实话,逆了很久才逆明白,程序要求输入格式是:flag{xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx},里面是uuid格式,第一部分和第二部分各少一个字节。
我把算法还原了,这里处理的是uuid格式识别之后的数据:

我这个是按照它这个32位逻辑一点点逆的,还原的时候直接按照64位处理就行。
关于42立方和问题,早就被玩烂了:
42=(-80538738812075974)^3 + 80435758145817515^3 + 12602123297335631^3
最后的脚本:

flag{ed82ab5-5c7a-da78-b7a8-d2f5fbef453}

虽然没有mac,不过IDA里逻辑看起来跟源代码基本没啥区别了,写爆破脚本硬算:

flag{m3Rkl3_h3LLMaN_KNaPsacK_Al90R17Hm!}

这个题差不多也玩了一天,是一个通过父子进程信号传递opcode和变量的虚拟机。我觉得很复杂了,分析了非常非常久,最后在IDA里设置虚拟机的结构体:

我把逻辑用python复现出来了,可以帮助理解,运行起来会有一些奇怪的问题hhhh。

之后写了个稀碎的大致流程:

然后就可以写出最后的加密逻辑和反向的解密逻辑了:

flag{e171a284-49e7-4817-ad8d-b704c02309e0}

没做上,不过说一下我分析出来的东西吧。
首先会根据规则将输入数据插入:

之后每九个字符进行一次检测,分析完可以确定每9个字符只能是0-9数字,且每九个字符不重复,所以推测这个东西是数独。网上随便找了个脚本跑,得到第一段输入序列:


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 7
支持
分享
最新回复 (13)
雪    币: 3188
活跃值: (2859)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
2
谢谢
最后于 2020-2-26 08:21 被 .编辑 ,原因:
2020-2-26 08:19
0
雪    币: 8447
活跃值: (5041)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
3
学习了
2020-2-26 09:14
0
雪    币: 47147
活跃值: (20445)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
感谢分享,欢迎参加KCTF比赛:https://bbs.pediy.com/thread-257321.htm
2020-2-26 16:10
0
雪    币: 1120
活跃值: (347)
能力值: ( LV8,RANK:148 )
在线值:
发帖
回帖
粉丝
5
kanxue 感谢分享,欢迎参加KCTF比赛:https://bbs.pediy.com/thread-257321.htm
第一次发帖就被加精,十分感谢,一定参加
2020-2-26 19:46
0
雪    币: 381
活跃值: (165)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
写得不错!
2020-2-27 11:09
0
雪    币: 2081
活跃值: (541)
能力值: ( LV3,RANK:27 )
在线值:
发帖
回帖
粉丝
7
2020-2-27 15:07
0
雪    币: 2210
活跃值: (1652)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
感谢大佬分享~
2020-2-27 15:24
0
雪    币: 15187
活跃值: (16852)
能力值: (RANK:730 )
在线值:
发帖
回帖
粉丝
9
大佬下次能多一点分析思路吗?感觉思路比方法重要一点~
2020-2-27 17:14
0
雪    币: 1120
活跃值: (347)
能力值: ( LV8,RANK:148 )
在线值:
发帖
回帖
粉丝
10
有毒 大佬下次能多一点分析思路吗?感觉思路比方法重要一点~
主要还是懒了,因为有的题调了半天才调出来,写完就不想再回去调了hhh,以后会注意的
2020-2-28 21:15
0
雪    币: 15187
活跃值: (16852)
能力值: (RANK:730 )
在线值:
发帖
回帖
粉丝
11
t1an5g 主要还是懒了,因为有的题调了半天才调出来,写完就不想再回去调了hhh,以后会注意的
理解~
2020-2-29 10:15
0
雪    币: 13
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
12
XD是什么意思?
2020-3-1 18:02
0
雪    币: 1120
活跃值: (347)
能力值: ( LV8,RANK:148 )
在线值:
发帖
回帖
粉丝
13
mb_digpptpv XD是什么意思?
就是 的意思
2020-3-1 20:50
0
雪    币: 2747
活跃值: (1697)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
2020-3-19 19:50
0
游客
登录 | 注册 方可回帖
返回
//