zoukankan      html  css  js  c++  java
  • X-CTF(REVERSE高级) parallel-comparator-200

    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='')
  • 相关阅读:
    015-面向对象
    017-错误和异常
    019-File
    020-OS
    021-模块
    022-标准库
    数据库目录
    数据库 概念详解
    MySQL 基础
    MySQL 数据库操作
  • 原文地址:https://www.cnblogs.com/blackicelisa/p/12263659.html
Copyright © 2011-2022 走看看