2016年(第二届)陕西省网络空间安全技术大赛(NSSTC) Reverse 2 Mindmap

很可惜,差一点就做出来了。这个题是用Golang编写的一个程序,之前似乎在某个CTF里也出过类似的题,有机会再做详细讲解。晚上睡不着觉,就简单写了几页,主要是讲了讲我是怎么在没有flirt签名的情况下找到切入点的。

Page 11

Page 2

Page 3

限于时间(写了一会就困了,所以稍有仓促),有几个问题没有详细展开。一个比较重要的方面是关于Golang是如何设计routine的,比赛的时候我也是现学的2。如果对golang没有接触过的话,Wikipedia是很好的工具,这篇文章写的也很好。如果对golang是如何编译成这样的exe比较感兴趣的话,可以阅读云风大神的这篇博客。另外一个容易让人困惑的点就是,在这个程序里有很多很多的检查、跳转到die。实际这是因为golang在设计之初希望提升安全性,因此加入了各种各样的检查,缓冲区长度、执行流防护等等……既然不是pwn,就可以掠过不计啦。程序里的加密/解密过程则比较简单,只是循环右移三位,不多介绍了。

此外觉得比较重要的是,逆向分析过程中对信息的快速筛选还是很重要的,否则像这样的题目,背景信息比较大,稍有不慎就会掉进细节的漩涡(像我一样)。

题目稍后放到网盘上。有什么意见/疑问请在下面的评论里说明,我会一并在文中或评论里回复。

2

关于调度器是什么:Golang调度器源码分析