zoukankan      html  css  js  c++  java
  • wp | 2020纵横杯 | RE

    两个题都是原题,然而我第二题祥云杯的原题还是没弄出来。

    Re

    friendlyRE

    这题是一个错题,出题人把!写成了@

    先去除花指令。

    然后发现有base64的表,跟了一下发现三次对表进行的变换。

    1. 是相邻两位互换
    2. 是大小写互换
    3. 是有一个32位的偏移

    所以首先针对base64进行处理,脚本如下:

    import base64
    a = "N25IKJBC5IyHav9+ZA3aqm=="
    table1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
    table2 = "ghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef"
    b = ""
    print(a)
    
    for i in a:
    if ord(i) >= ord('a') and ord(i) <= ord('z'):
    b += chr(ord(i)-32)
    elif ord(i) >= ord('A') and ord(i) <= ord('Z'):
    b += chr(ord(i)+32)
    else:
    b += i
    print(b)
    
    a = ""
    
    for i in range(0,len(b),2):
    a += b[i+1]
    a += b[i]
    print(a)
    b = ''
    for i in range(len(a)-2):
    tmp = table2.index(a[i])
    b += table1[tmp]
    
    b+='=='
    print(b)
    # 解码
    x = base64.b64decode(b)
    print(x)
    print(len(x))
    with open('en.txt', 'w') as f:
    for i in x:
    f.write(str(hex(i))[2:])
    f.write(' ')
    
    

    将源数据从文件中取出来。

    跟进加密的模块,发现一个256大小的int型数组,和一个大小为4的固定数组,很容易识别为sm4算法。

    使用pysm4对上面得出的明文进行解密,密钥即为图中的局部变量字符串:

    图片

    随后再捕获异常进行base64编码。

    一开始base表中4和5写反了导致怎么出来都是乱码,耽误了很多时间......

    sm4的解密脚本如下:

    from pysm4 import decrypt
    en = 0x5870990c4f3b099078d6079ce93817b3
    key = 0x546869736973696e7374657265737468
    de = decrypt(en, key)
    print hex(de)[2:-1]
    

    得到结果:446f796f754b6e6f7756454853454821
    然后转字符串就好了:

    图片

    加上flag{}

    最终flag为flag{DoyouKnowVEHSEH!}

  • 相关阅读:
    C. New Year Book Reading
    B. New Year Permutation
    A. New Year Transportation
    D. The Child and Zoo
    python 3.6 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte错误
    VB ListView控件各种操作详解
    开发者工具下载
    phpstorm10激活加汉化
    Windows Server 2016 配置指南 之 FTP环境搭建篇
    VB.NET Jobject 解析 JSON
  • 原文地址:https://www.cnblogs.com/Mz1-rc/p/14193680.html
Copyright © 2011-2022 走看看