crapem 用户名和密码

上次**出了第一个crapem的验证码,这次**一下它的用户名密码,并且要知道密码生成的算法。

首先运行一下程序,随便输入几个用户名和密码

crapem 用户名和密码

 

提交肯定错误,弹出:

crapem 用户名和密码

根据弹窗内容,中文搜索进入,然后代码分析:

crapem 用户名和密码

crapem 用户名和密码

 最后得出了密码的算法:将输入的用户名的ASCII码的二进制数字的第一个字节的数据转换成16进制后乘以16进制的29再乘以2,最后结果转换为十进制,然后再和字符串连接起来。

这个题目结束(***以后做,还需要一点基础)。

 

 

 

然后是BUGKU上的第四题。

打开是个游戏:

crapem 用户名和密码

这个游戏卡了很久,其实一开始我是把这个游戏玩过去了的,但是这样收获不到东西,最后还是死磕出来了。

把程序拖入OD,字符串搜索,找到flag get,跳转过去:

crapem 用户名和密码

 

看这个样子应该是从别的地方跳过来的,因为上面全是int 3 中断。但是我们跟着跳回去发现并没有生成flag的代码,只是判断的代码,所以我们推测flag应该是在下面生成,我们往下翻。

crapem 用户名和密码

发现有很长的一段数据存储,很可疑,我把程序拖入IDA,然后转换这些数据发现并不是flag,所以再到OD中往下分析。最后发现有一段循环,分析:

crapem 用户名和密码

得出flag的算法,编写脚本:

crapem 用户名和密码

运行得出flag:

crapem 用户名和密码

算法就是将那一大堆数据分成两堆,然后分别进行异或,再和0x13进行异或,最终结果就是flag。

 

 

 

crapem第二题:

crapem 用户名和密码

照常字符串搜索,然后分析:

crapem 用户名和密码

 得出结果。