首页 > 其他 > 详细

X-CTF(REVERSE高级) parallel-comparator-200

时间:2020-02-05 16:19:46      阅读:99      评论:0      收藏:0      [点我收藏+]

first_letter是随机生成大于64的数取余26再加97,任何一个大于64的数取余26范围都在0-25,所以first_letter的值在97-122之间

技术分享图片
first_letter和arguments数组

其它的加密过程

技术分享图片
result

 

技术分享图片
generated_string

 

技术分享图片
最后的比较

因为first_letter和user_string都是未知的,所以我们爆破求解,输出的flag不仅乱码,还越界了。检查代码,发现first_letter是个固定的值不是数组。

技术分享图片

这个first_letter的值要使每一个(first_letter+differences[i])^user_string的值都为0,好绕啊。

技术分享图片

手工修改每一次first_letter参与运算的值,试到108时得到了一个像样子的user_string。从97试到108还行吧~~~菜鸟不懂那些大佬怎么知道random()生成的就是108,有了解的希望评论教教我

技术分享图片

 
附代码:
 1 differences=[0, 9, -9, -1, 13, -13, -4, -11, -9, -1, -7, 6, -13, 13, 3, 9, -13, -11, 6, -7]
 2 
 3 j=0
 4 
 5 for t in range(10):
 6 
 7           for i in range(65,126):    #user_string
 8 
 9                     out1=108+differences[j]
10 
11                     out2=out1^i          #得到result
12 
13                     #print("out2",out2)
14 
15                     if( out2==0):          #加了一个just_a_string又减去了所以result的值是0才对
16 
17                               j=j+1
18 
19                               print(chr(i),end=‘‘)

 

X-CTF(REVERSE高级) parallel-comparator-200

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

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