不得不说,对于这个比赛,我实在无话可说,决赛竟然会拿样题当比赛题,我也真是醉了。
决赛的密码类与溢出类的第一题都是原题,题解可以参见这里和这里。
而最神奇的是,如果做出来两道题就能得二等奖……这我只想说,乃们去比赛前都不把样题看看的么?
由iroser指正,决赛的溢出类题目稍有修改,于是特去专门又check了一下,果然不一样,好吧,当时没有diff是我的错,就大概看了眼反汇编的代码流程基本一致,没想到他竟然就把buffer长度改了,然后把输出的结果由md5("kernel32.GetVersion")改成了md5(md5("kernel32.GetVersion")),确实是没料到他竟然做了这么无聊的修改,只要懂了样题,做这题应该也是毫无压力瞬秒。
不过既然buffer的长度变了,如果想用溢出的方法来做这道题的话,payload中的填充字节自然也得跟着增长了,不过这题还是通过改程序流程要方便多了,并且不会被这小小的修改影响。
在此特别感谢iroser指出此问题!