170709 逆向-CISCN总结

1625-5 王子昂 总结《2017年7月9日》 【连续第280天总结】 

A. CISCN

B. 一整天都投入进去还是非常充实的,虽然几个同学一起想MISC却一道都没做出来,这种经历却是特别有趣
MISC方面大家的积攒都不够,开脑洞基本上能过一些小关,但是面对真正的题目就寸步难行了
这既是成长的过程也是提醒我们抓紧时间锻炼各方面知识
个人的逆向方面比较受挫。今年的逆向不同以往,大量使用了动态函数,以前的直接IDA反编译出源码通读一遍就能明白算法得到flag;今年的必须动静结合一点一点跟才能找到
而且代码极其复杂,使用了很多不常见的函数,读起来感觉寸步难行
数字游戏作为低分逆向,与maze类似,刚开始读起来因为使用了很多没见过的函数误以为加壳,导致浪费了很多时间。其实这个程序看名字就能大概猜想应该是接收数据然后与静态内存用算法比对,完成一个游戏。后来另寻僻经在后半部分检测的地方找到了check,很好理解,顿时就有了信心。这样就能大概猜出来各变量的作用,然后针对性地去前边分析即可。思路如此,被同学先py交易到了flag,生气
中间APK和ELF的逆向都在IDA用F5反编译后就很难进行了,函数地址存放在寄存器中导致完全无法读下去。基本都在跟同学做MISC,包括明文攻击和文件分析逆序,然而都没找到flag
最后零点出了一个低分逆向-溯源。这个题目读起来虽然也有点吃力,但没到无法进行的地步。OD进行动态跟踪可以大概猜到值存放在什么位置,长距离变量间的联系;IDA静态反编译统领大局,比较容易看出局部变量之间的运算方法。磕磕绊绊也能读下来,大概读了三四个小时终于把算法复现,先看出了需要输入一个长度为200的字符串,接着是最后是否成功是判断一个栈的值是否为1,2,3...;当IDA理解不顺的时候用OD跟踪值的变化是很方便的选择。尝试输入以后发现在另一个栈堆将字符串处理。重新跟踪寻找,发现有一个在内存中寻找根据然后对字符串做交换的地方。把它dump下来,然后再继续分析算法就行了。
搞出来源码以后,时间所剩也不多了,突然发现需要得到的是逆算法,尝试将加减运算做逆处理也没得到正确的逆算法

最后几分钟的时候输出了log,观察发现此时的逆算法已经大体能够逆出原数据了,只是中间有少量数据还是报错了,感觉是有一步出问题了。然而没时间了,后来再找也没找到问题,可惜

总的来说,需要学习的地方还很多,虽然挫败感挺强的,不过还有很多要学习的地方啊

C. 明日计划
ZigBee学习,学习大佬的WriteUp

你可能感兴趣的:(170709 逆向-CISCN总结)