• 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='')
  • 相关阅读:
    史上最简洁的handler原理解释
    handler解惑
    Http中get和post的区别
    使用软引用缓存Bitmap
    Request头和Response头
    DNS编程实验--域名与IP的相互转换
    CString与string
    C++ string占多少个字节测试
    java中类的继承性和多态性实例
    java寻找html文件中的标签
  • 原文地址:https://www.cnblogs.com/blackicelisa/p/12263659.html
Copyright © 2020-2023  润新知