zoukankan      html  css  js  c++  java
  • 攻防世界

    base64:

    根据题目base64可知编码方式,下载附件发现是一个txt文件,把内容用工具解码就彳亍了,即可得到flag,

    flag:

    cyberpeace{Welcome_to_new_World!}

    Caesar:

    1.下载附件,打开txt文件发现如下内容,

    oknqdbqmoq{kag_tmhq_xqmdzqp_omqemd_qzodkbfuaz}

    2.根据题目为“凯撒密码”,即为字母偏移,因为知道flag格式为cyberpeace{},所以o要对应c,所以计算差值为12,尝试解密和加密,发现偏移12时加密可得flag,

    flag:

    cyberpeace{you_have_learned_caesar_encryption}

    Morse:

    1.下载附件,如下内容,不难发现是莫尔斯密码,在线工具搞一波即可得到flag,

    11 111 010 000 0 1010 111 100 0 00 000 000 111 00 10 1 0 010 0 000 1 00 10 110

    2.

    flag:

    cyberpeace{morsecodeissointeresting}

    Railfence:

    1.下载附件,打开可知是栅栏密码,

    ccehgyaefnpeoobe{lcirg}epriec_ora_g

    2.根据题目知道为普通栅栏密码分五组,flag开头得知分为
    ccehgyaefnpeoobe{lcirg}epriec_ora_g
    前五个为cyber将其解析:
    最后将其汇集

    flag:

    cyberpeace{railfence_cipher_gogogo}

    补充:

    栅栏密码原理:
    普通栅栏密码:
    1 2 3 4 5 6(明文) # key=3 进行栅栏加密
    1 2 3
    4 5 6
    结果为 1 4 2 5 3 6
    WWW的变种栅栏密码
    1 2 3 4 5 6 # key=3 Rail-fence Cipher
    1 . . . 5 . ↘  ↗ ↘
    . 2 . 4 . 6 ↘   ↗
    . . 3 . . .     ↘ ↗
    结果为 1 5 2 4 6 3

    参考:
    https://www.pianshen.com/article/7124782038/

    https://blog.csdn.net/qq_43504939/article/details/98473847

    不仅仅是Morse:

    1.下载附件,发现是一串点和杠,尝试摩尔斯密码,

    --/.-/-.--/..--.-/-..././..--.-/..../.-/...-/./..--.-/.-/-./---/-/...././.-./..--.-/-.././-.-./---/-.././..../..../..../..../.-/.-/.-/.-/.-/-.../.-/.-/-.../-.../-.../.-/.-/-.../-.../.-/.-/.-/.-/.-/.-/.-/.-/-.../.-/.-/-.../.-/-.../.-/.-/.-/.-/.-/.-/.-/-.../-.../.-/-.../.-/.-/.-/-.../-.../.-/.-/.-/-.../-.../.-/.-/-.../.-/.-/.-/.-/-.../.-/-.../.-/.-/-.../.-/.-/.-/-.../-.../.-/-.../.-/.-/.-/-.../.-/.-/.-/-.../.-/.-/-.../.-/-.../-.../.-/.-/-.../-.../-.../.-/-.../.-/.-/.-/-.../.-/-.../.-/-.../-.../.-/.-/.-/-.../-.../.-/-.../.-/.-/.-/-.../.-/.-/-.../.-/.-/-.../.-/.-/.-/.-/-.../-.../.-/-.../-.../.-/.-/-.../-.../.-/.-/-.../.-/.-/-.../.-/.-/.-/-.../.-/.-/-.../.-/.-/-.../.-/.-/-.../.-/-.../.-/.-/-.../-.../.-/-.../.-/.-/.-/.-/-.../-.../.-/-.../.-/.-/-.../-.../.-

    工具连接:

    http://www.txttool.com/WenBen_morse.asp

    2.根据回显可知存在另一种decode,可知培根密码加密,将AB字符串进行培根密码解密,

    密码工具:

    https://tool.bugku.com/peigen/

    3.按照格式构造flag即可,

    flag:

    cyberpeace{attackanddefenceworldisinteresting}

    混合编码:

    1.下载附件,内容如下,

    JiM3NjsmIzEyMjsmIzY5OyYjMTIwOyYjNzk7JiM4MzsmIzU2OyYjMTIwOyYjNzc7JiM2ODsmIzY5OyYjMTE4OyYjNzc7JiM4NDsmIzY1OyYjNTI7JiM3NjsmIzEyMjsmIzEwNzsmIzUzOyYjNzY7JiMxMjI7JiM2OTsmIzEyMDsmIzc3OyYjODM7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiMxMDc7JiMxMTg7JiM3NzsmIzg0OyYjNjU7JiMxMjA7JiM3NjsmIzEyMjsmIzY5OyYjMTIwOyYjNzg7JiMxMDU7JiM1NjsmIzEyMDsmIzc3OyYjODQ7JiM2OTsmIzExODsmIzc5OyYjODQ7JiM5OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzUwOyYjNzY7JiMxMjI7JiM2OTsmIzEyMDsmIzc4OyYjMTA1OyYjNTY7JiM1MzsmIzc4OyYjMTIxOyYjNTY7JiM1MzsmIzc5OyYjODM7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiM5OTsmIzExODsmIzc5OyYjODQ7JiM5OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzExOTsmIzc2OyYjMTIyOyYjNjk7JiMxMTk7JiM3NzsmIzY3OyYjNTY7JiMxMjA7JiM3NzsmIzY4OyYjNjU7JiMxMTg7JiM3NzsmIzg0OyYjNjU7JiMxMjA7JiM3NjsmIzEyMjsmIzY5OyYjMTE5OyYjNzc7JiMxMDU7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiM2OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzExOTsmIzc2OyYjMTIyOyYjMTA3OyYjNTM7JiM3NjsmIzEyMjsmIzY5OyYjMTE5OyYjNzc7JiM4MzsmIzU2OyYjMTIwOyYjNzc7JiM4NDsmIzEwNzsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzEyMDsmIzc2OyYjMTIyOyYjNjk7JiMxMjA7JiM3ODsmIzY3OyYjNTY7JiMxMjA7JiM3NzsmIzY4OyYjMTAzOyYjMTE4OyYjNzc7JiM4NDsmIzY1OyYjMTE5Ow==

    2.发现填补符号=,进行base64解密,得到unicode码,

    LzExOS8xMDEvMTA4Lzk5LzExMS8xMDkvMTAxLzExNi8xMTEvOTcvMTE2LzExNi85Ny85OS8xMDcvOTcvMTEwLzEwMC8xMDAvMTAxLzEwMi8xMDEvMTEwLzk5LzEwMS8xMTkvMTExLzExNC8xMDgvMTAw

    3.将Unicode转换为ASCII码后得到如下结果:

    LzExOS8xMDEvMTA4Lzk5LzExMS8xMDkvMTAxLzExNi8xMTEvOTcvMTE2LzExNi85Ny85OS8xMDcvOTcvMTEwLzEwMC8xMDAvMTAxLzEwMi8xMDEvMTEwLzk5LzEwMS8xMTkvMTExLzExNC8xMDgvMTAw

    4.再次进行base64解码,得到:

    /119/101/108/99/111/109/101/116/111/97/116/116/97/99/107/97/110/100/100/101/102/101/110/99/101/119/111/114/108/100

    5.对照ascii可得到flag,

    welcometoattackanddefenceworld

    flag:

    cyberpeace{welcometoattackanddefenceworld}

    参考:

    https://blog.csdn.net/kjcxmx/article/details/105898310 

    幂数加密:

    1.下载附件,内容如下,

    8842101220480224404014224202480122

    2. 查wp大法,云影密码,脚本如下:

    #!/user/bin/env python
    # -*-coding:utf-8 -*-
    
    a = open(r'crypto11.txt','r')
    ciphertext = a.read()
    
    s = ciphertext.split('0')
    
    flag = ''
    for i in range(len(s)):
        list = []
        for j in s[i]:
            list.append(j)
        b = 0
        for k in list:
            b += int(k)
        # 字母ascii值与字母顺序相差为96
        flag += chr(b+96)
    print('flag is ',flag)

    flag:

    cyberpeace{WELLDONE} 

    补充:

    二进制数除了0和1的表示方法外,在由二进制转换成十进制的时候,还可以表示成2的N次方的形式。例如:
    15=20+21+22+23
    并且我们发现,任意的十进制数都可以用2n或2n+2^m+……的形式表示出来,可以表示的单元数由使用的max n来决定。
    可表示的单元数=2^(n+1)-1
    二进制幂数加密法就是应用这个原理,由于英文字母只有26个字母,由公式可知,只要2的0、123、4次幂就可以表示31个单元。通过用二进制幂数表示字母序号数来加密。例如
    明文: d o n o t p u l l a l l y o u r e g g s i n o n e b a s k e t
    字母序号:4 15 14 15 20 16 21 12 12 1 12 12 25 15 21 18 5 7 7 19 9 14 15 14 5 2 1 19 11 5 20
    由于4=2^2 所以D加密过之后是2;15=20+21+22+23所以O加密后是0123。同理得到上述明文的加密后的密文
    密文:2 0123/123 0123 24/4 024 23 23/0 23 23/034 0123 024 14/02 012 012 014/03 123 /0123 123 02/1 0 014 013 02 24
    其中空格表示字母的间隔,/表示单词的间隔。
    字母加密结果对照
    A 1-------0
    B 2-------1
    C 3------01
    D 4------2
    E 5------02
    F 6------12
    G 7------012
    H 8------3
    I 9------03
    J 10-----13
    K 11-----013
    L 12-----23
    M 13----023
    N 14----123
    O 15----0123
    P 16----4
    Q 17----04
    R 18----14
    S 19-----014
    T 20-----24
    U 21-----024
    V 22-----124
    W 23-----0124
    X 24-----34
    Y 25-----034
    Z 26-----134

    easy_RSA:

    1.下载附件,题干如下:

    在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17 求解出d

    2.搜大佬脚本,

    def exgcd(a, n):
        if n == 0:
            return 1, 0
        else:
            x, y = exgcd(n, a % n)
            x, y = y, x - (a // n) * y
            return x, y
    
    
    def getReverse(a, n):
        re, y = exgcd(a, n)
        while (re < 0):
            re += n
        return re
    
    
    if __name__ == "__main__":
        p = 473398607161
        q = 4511491
        e = 17
        d = getReverse(e, (p - 1) * (q - 1))
        print('d = ' + str(d))

    flag:

    cyberpeace{125631357777427553}

    补充:

    RSA计算过程:
    1.任选两个不相等的质数p和q
    2.计算密钥的长度n=pq
    3.计算n的欧拉函数φ(n):
    φ(n) = (p-1)(q-1)
    4.随机选择一个整数e,也就是公钥当中用来加密的那个数字
    条件是1< e < φ(n),且e与φ(n) 互质。
    5.计算e对于φ(n)的模反元素d,也就是密钥当中用来解密的那个数字
    (ed) mod (φ(n)) = 1
    至此,(n,e),(n,d)就是密钥对。其中(n,e)为公钥,(n,d)为私钥

    easychallenge:

    !!!

    1.下载附件,发现是一个.pyc文件,

    补充:pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,运行加载的速度会有所提高;另一反面,把py文件编译为pyc文件,从而可以实现部分的源码隐藏,保证了python做商业化软件时的安全性

    2.用在线反编译工具得到如下代码,

    import base64
    
    def encode1(ans):
        s = ''
        for i in ans:
            x = ord(i) ^ 36
            x = x + 25
            s += chr(x)
        
        return s
    
    
    def encode2(ans):
        s = ''
        for i in ans:
            x = ord(i) + 36
            x = x ^ 36
            s += chr(x)
        
        return s
    
    
    def encode3(ans):
        return base64.b32encode(ans)
    
    flag = ' '
    print 'Please Input your flag:'
    flag = raw_input()
    final = 'UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E==='
    if encode3(encode2(encode1(flag))) == final:
        print 'correct'
    else:
        print 'wrong'

    3.根据代码写出解密脚本,得到flag,

    import base64
    
    
    def decode1(ans):
        s = ''
        for i in ans:
            x = i ^ 36
            x = x - 36
            s += chr(x)
        return s
    
    
    def decode2(ans):
        s = ''
        for i in ans:
            x = ord(i) - 25
            x = x ^ 36
            s += chr(x)
        return s
    
    
    def decode3(ans):
        return base64.b32decode(ans, casefold=False, map01=None)
    
    
    number = "UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E==="
    number = decode2(decode1(decode3(number)))
    print(number)

    flag:

    cyberpeace{interestinghhhhh}

    参考:

    https://www.cnblogs.com/zhengna/p/13477114.html

  • 相关阅读:
    解决Original error: Could not proxy command to remote server. Original error: Error: socket hang up
    python各进制转换
    爬楼梯问题,yield学习总结
    微信开放平台API开发资料
    数据切分——Atlas读写分离Mysql集群的搭建
    svn SSL 错误:Key usage violation in certificate has been detected
    如何将一个空间里的内容全部复制到另一个空间,文件名不变
    SVN客户端安装 Linux
    Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE
    搭建SVN服务器
  • 原文地址:https://www.cnblogs.com/3cH0-Nu1L/p/13676319.html
Copyright © 2011-2022 走看看