首页 > 其他 > 详细

X-CTF(REVERSE高级) hackme

时间:2020-02-05 15:24:51      阅读:84      评论:0      收藏:0      [点我收藏+]

代码逻辑从上至下:

用户输入长度为22的数组v1——随机取0-21的一个数字v7——byte_6B4270[v7]的值赋给v6——

v1[v7]的值赋给v5——验证十次如果v9^v5==v6那么成功。

所以我们求用户输入v1就是求所有的v5的值,因为v9^v5==v6,所以v5==v9^v6

技术分享图片

细节说明:

一、byte_6B4270数组的数据查看,在代码处双击来到汇编,如果是这样的,右键选择data进行转换

技术分享图片
这样的数据

 

技术分享图片
data转换后的数据

二、怎么确定v1是用户输入,因为通过i(rbp+var_4)判断了用户输入长度,所以自然而然v1就是用户输入了,伪代码是反汇编出来的不是源码,所以也会有差错,这时候就要使用tab键看看汇编代码什么意思了

技术分享图片

三、注意这里对v9强制类型转换为usigned_int8,在python里写解密代码使用0xff即可

 

技术分享图片


写出解密代码:

技术分享图片

 
附代码:
 1     byte =[0x5F, 0x0F2, 0x5E, 0x8B, 0x4E, 0x0E,0x0A3, 0x0AA, 0x0C7, 0x93, 0x81, 0x3D, 0x5F, 0x74,0x0A3, 0x9, 0x91, 0x2B, 0x49, 0x28, 0x93, 0x67 ]
 2 
 3     v9=0
 4 
 5     flag=0
 6 
 7     for i in range(0,22):
 8 
 9               v9 = 1828812941 * v9 +12345
10 
11               flag=(v9^byte[i])&0xff
12 
13               print(chr(int(flag)),end=‘‘)

 

X-CTF(REVERSE高级) hackme

原文:https://www.cnblogs.com/blackicelisa/p/12263663.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!