上次破解出了第一个crapem的验证码,这次破解一下它的用户名密码,并且要知道密码生成的算法。
首先运行一下程序,随便输入几个用户名和密码
提交肯定错误,弹出:
根据弹窗内容,中文搜索进入,然后代码分析:
最后得出了密码的算法:将输入的用户名的ASCII码的二进制数字的第一个字节的数据转换成16进制后乘以16进制的29再乘以2,最后结果转换为十进制,然后再和字符串连接起来。
这个题目结束(注册机以后做,还需要一点基础)。
然后是BUGKU上的第四题。
打开是个游戏:
这个游戏卡了很久,其实一开始我是把这个游戏玩过去了的,但是这样收获不到东西,最后还是死磕出来了。
把程序拖入OD,字符串搜索,找到flag get,跳转过去:
看这个样子应该是从别的地方跳过来的,因为上面全是int 3 中断。但是我们跟着跳回去发现并没有生成flag的代码,只是判断的代码,所以我们推测flag应该是在下面生成,我们往下翻。
发现有很长的一段数据存储,很可疑,我把程序拖入IDA,然后转换这些数据发现并不是flag,所以再到OD中往下分析。最后发现有一段循环,分析:
得出flag的算法,编写脚本:
运行得出flag:
算法就是将那一大堆数据分成两堆,然后分别进行异或,再和0x13进行异或,最终结果就是flag。
crapem第二题:
照常字符串搜索,然后分析:
得出结果。