跳转至
2021 | NEWSCTF | Reverse

NEWSCTF - re_signin

题目

count is times

Hint

冒泡排序的次数

解题思路

  • 题目包含两个文件flag.pycflag.txtflag.txt 是若干一维数组
  • 反编译 PYC 文件获得 PY 源代码
    uncompyle6 flag.pyc > flag.py
    
  • 分析代码,发现冒泡排序,结合题目 count is times 可以推测 c 数组每一位的值是对应数组冒泡排序的总交换次数(本来没有 Hint 的 XD)
    flag = 'xxxx{xxxxxxxxxxxxxxxxxx}'
    import random
    c = [0] * len(flag)
    for i in range(len(flag)):
        c[i] = ord(flag[i])
    else:
        print(c)
        t = 0
        for i in range(2000):
            num = range(0, 100)
            nums = random.sample(num, 22)
            numss = nums.copy()
    
        # 冒泡排序
        for i in range(len(nums) - 1):
            for j in range(len(nums) - i - 1):
                if nums[j] > nums[(j + 1)]:
                    nums[j], nums[j + 1] = nums[(j + 1)], nums[j]
    
            if count == c[t]:
                print(numss) # 交换前的 nums 数组
                t += 1
                if t == 24:
                    break
    
  • 计算得 synt{jrypbzr_gb_arjfpgs}
  • ROT13 可得 Flag:flag{welcome_to_newsctf}

最后更新: 2021年9月9日 21:49:53
Contributors: YanhuiJessica

评论