zoukankan      html  css  js  c++  java
  • CTF论坛练习平台密码学write up

    CTF论坛练习平台网址:http://123.206.31.85/challenges

    1.滴答~滴

    摩尔斯密码解密直接得到flag

    bkctfmisc,注意格式输入即可

    2.聪明的小羊

    栅栏解密,栅栏数2,解密得到

    KEY{sad23jjdsa2}

    3.ok

    打开看到一串ook代码

     这是一种编程语言,百度ook在线解密可得

    flag{ok-ctf-1234-admin}

    在线解密网址:https://www.splitbrain.org/services/ook   第四题也是这个网址

    4.这不是摩斯密码

    打开看到一串特殊符号,这也是一种编程语言,百度JSFuck在线解密即可得到

    flag{ok-c2tf-3389-admin}

    5.简单加密

    观察字符串全是ascii码表中字符,有点凯撒移位的意思

    试试凯撒移位4得到

    a2V5ezY4NzQzMDAwNjUwMTczMjMwZTRhNThlZTE1M2M2OGU4fQ==

    一看就知道典型的base64加密方式,解密可得

    key{68743000650173230e4a58ee153c68e8}

    6.一段base64

    打开发现一长串字符串,试试base64,得到

    观察字符串没有超过8的数,猜测是八进制加密,转成16进制得到

    多重解码不解释,直接搬运程序

    #coding:utf-8
    #python 2.7
    import urllib
    import re
    
    #1. 第一层base64
    with open('base64.txt') as f:
        cipher1 = f.read()
    plain1 = cipher1.decode('base64')
    # print plain1, type(plain1)
    
    #2. 第二层,根据plain1的形式(0-7的整数),推测为8进制加密
    cipher2 = plain1
    cipher2 = re.findall(r'd+', cipher2)
    # print cipher2
    plain2 = ''
    for i in cipher2:
        plain2 += chr(int(i, 8))
    # print plain2
    
    #3. 第三层,根据plain2的形式(xdd),推测为16进制加密
    cipher3 = plain2
    cipher3 = re.findall(r'd+', cipher3)
    # print cipher3
    plain3 = ''
    for i in cipher3:
        plain3 += chr(int(i, 16))
    # print plain3
    
    #4. 第四层,根据plain3的形式(udd*),推测为unicode
    cipher4 = plain3
    cipher4 = re.findall(r'u[dw]+', cipher4)
    # print cipher4
    cipher4 = ''.join(cipher4).replace('u', 'u')
    # print cipher4
    plain4 = cipher4.decode('unicode-escape').encode('utf-8')#将unicode转中文,来自知乎
    # print plain4    
    
    #5. 第5层,根据plain4形式,将所有数字转ASCII即可
    cipher5 = plain4
    cipher5 = re.findall('d+', cipher5)
    # print cipher5
    plain5 = ''
    for i in cipher5:
        plain5 += chr(int(i))
    # print plain5
    
    #6. 第6层,百度plain5的编码格式(&#x)得到解码方法
    cipher6 = plain5
    # print cipher6
    cipher6 = re.findall(r'd+w?', cipher6)
    # print cipher6
    plain6 = ''
    for i in cipher6:
        plain6 += chr(int(i, 16))
    # print plain6
    
    #7. 第7层,百度plain6的编码格式(&#)得到解码方法
    cipher7 = plain6
    cipher7 = re.findall('d+', cipher7)
    # print cipher7
    flag = ''
    for i in cipher7:
        flag += unichr(int(i))
    # print flag
    flag = urllib.unquote(flag)
    print flag

    解码可得

    flag{ctf_tfc201717qwe}

    7.奇怪的密码

    暂时没头绪,待更

    8.zip伪加密

    打开压缩包发现有密码,用winhex查看文件

    发现文件头部分被改了数据,将00 09 修改回 00 00

    保存直接解压就可得到flag

    flag{Adm1N-B2G-kU-SZIP}

    9.托马斯杰斐逊

    观察密钥发现数字从1~13,猜想是转轮解密即按照密钥提出每一行从密文处剪切前移到首端,例:

    2: <KPBELNACZDTRXMJQOYHGVSFUWI

    2: <HGVSFUWIKPBELNACZDTRXMJQOY

    全部处理后得到

    H  G V S F U  WIKPBELNACZDTR    X   MJQOY
    C  P M N Z Q  WXYIHFRLABEUOT   S   GJVDK
    B  V  I  Q H K  YPNTCRMOSFEZWA X   JGDLU
    T  E Q G Y X  PLOCKBDMAIZVRN    S   JUWFH
    S  L O Q X  V ETAMKGHIWPNYCJ    B   FZDRU
    X  Q Y  I  Z  M JWAORPLNDVHGFC  U   KTEBS
    W A T  D S R FHENYVUBMCOIKZ    G   JXPLQ
    C  E O N J  Q GWTHSPYBXIZULV     K   MRAFD
    R  J  L  X K  I SEFAPMYGHBQNOZ   U   TWDCV
    Q W X  P H K ZGJTDSENYVUBML    A  OIRFC
    G O  I   K F H ENYVUWABMCXPLT   D   SRJQZ
    LTDENQWAOXPYVUIKZGJB             M   CSRFH
    ENYSRUBMCQWVJXPLTDAO           I    KFZGH
    SWAYXPLVUBOIKZGJRFHE               N    MCQTD

    flag{XSXSBUGKUADMIN}

  • 相关阅读:
    ACwing 199 约数之和
    Acwing 222 青蛙的约会
    Acwing 220 最大公约数
    Acwing 200 Hankson的趣味题
    牛客 同余方程
    Acwing 198 反素数
    2020牛客多校 第六场B
    牛客 计数器
    Java基础-快捷键以及DOS命令
    A1111 Online Map (30分)(最短路径、Dijkstra+DFS)
  • 原文地址:https://www.cnblogs.com/Acewipe/p/7588524.html
Copyright © 2011-2022 走看看