zoukankan      html  css  js  c++  java
  • 南邮CTF密码学write up

    南邮CTF练习平台网址: http://ctf.nuptzj.cn/challenges#

     1.esay!

    base64解密不解释

    nctf{this_is_base64_encode}

    2.KeyBoard

    在键盘上按字母画画可得areuhack

    注意格式得到

    nctf{areuhack}

    3.base全家桶

    base有64,32,16三种加密,按顺序来一轮可得

    nctf{base64_base32_and_base16}

    4.n次base

    反复base64 15次 嫌麻烦的可以自己去写python,最后得到

    flag:nctf{please_use_python_to_decode_base64}

    5.骚年来一发吗

    写出对应的解密函数

    <?php
    function decode($str)
    {  
        $str=base64_decode(strrev(str_rot13($str)));
        $_o=strrev($str);  
        for($_0=0;$_0<strlen($_o);$_0++)
        {  
            $_c=substr($_o,$_0,1);  
            $__=ord($_c)-1;  
            $_c=chr($__);  
            $_=$_.$_c;  
        }  
        return $_;  
    }  
    $string='iEJqak3pjIaZ0NzLiITLwWTqzqGAtW2oyOTq1A3pzqas';  
    echo decode($string);
    ?>

    运行后得到

    nctf{rot13_and_base64_and_strrev}

    6.mixed_base64

    base64,32,16随机组合解密,爆破可得

    直接上python代码,爆破跑一分钟直接出flag

    # coding:utf8
    import base64
    
    ciphertext = "GM2DINJTGUZTIMZUGM4TGNZUGEZTINBUGM2TGNBTGUZTEMZUGMZDGNBUGUZTIMZUGM2DGOJTGMZTCMZUGQ2TGNRUGEZTKMZRGMZTGMJTGQ2DKMZXGQYTGNJTGEZTGMZRGM2DINBTGY2DCMZVGM2TGNZUGEZTINBVGM3DIMRTGQ2DIMZTGMYTGNBUGUZTMNBRGM2TGMRTGQZTEMZUGQ2TGNJTGQZTKMZZGMZTGMJTGQ2DKMZUGM2DGNJTGIZTIMZSGM2DINJTGQZTIMZVGM2TGMZTGEZTINBVGM2DGNBTGUZTKMZTGMYTGNBUGQZTONBRGM2TGNJTGMZTAMZUGQ2DGNZUGEZTKMZVGMZTGMRTGQ2DKMZWGQZDGNBTHEZTGMZSGM2DINJTGQZTIMZVGM2TGMZTGIZTINBVGM2DGNJTGUZTCMZXGQYTGNBUGQZTKMZUGM2TGNJTG4ZTSMZUGQ2TGNBTGUZTIMZVGMZTGMJTGQ2DKMZUGM2DGNJTGUZTGMZSGM2DINJTG42DCMZUGMYTGMZTGEZTINBVGM3DIMJTGUZTKMZXGQYTGNBUGUZTKMZUGM2TGNJTGMZTCMZUGQ2TGNJTGQZTMMZTGMZTGNJTGQ2DKMZVGM2DGNBTHEZTGMZRGM2DINJTGUZTIMZVGM4TGMZTGAZTINBVGM2DGNJTGUZTSMZTGMYTGNBUGQZTKMZUGM2DINBTG4ZTOMZUGQ2TGNBTGUZTIMZVGMZTGMBTGQ2DMMZUGM2DGNJTGUZTGMZRGM2DINJTGY2DEMZUGM4TGMZTGAZTKMZRGM2TGNBTGUZTCMZTGMYTGNBUGUZTKMZUGM2DINBTGMZTCMZUGQ2TGNJTGQZTINBUGMZTGMJTGQ2DKMZUGM2DGNBUGQZTGMZRGM2DINJTGY2DCMZVGM2TGMZTGEZTINBVGM3DIMJTGQ2DIMZXGQYTGNBUGQZTIMZUGM2TGMRTGQZTKMZUGQ2TGNRUGIZTINBUGMZTGMJTGQ2DIMZWGQYTGNJTGIZTIMZSGM2DINJTGUZTIMZVGMYTGMZTGEZTINBVGM3DIMJTGYZTGMZXGM3TGNBUGUZTKMZUGM2TGMJTGMZTCMZUGQ2DGNRUGEZTINBUGM3TGOBTGQ2DKMZUGM2TGNBTGUZTGMZQGM2DINBTG42DCMZVGM2TGNZTHEZTINBVGM2DGNBTGUZTKMZTGMZDGNJTGEZTONBRGM2TGNJTG4ZTSMZUGQ2TGNJTGQZTKMZVGMZTGMRTGUZTCMZXGQYTGNJTGUZTGMZSGM2DINJTGQZTIMZWGM3TGMZTGEZTINBVGM3TIMJTGUZTKMZTGMYDGNBUGUZTIMZVGM2DGNJTGMZTAMZUGQ2TGNRUGEZTKMZVGM3TGOJTGQ2DIMZXGQYTGNBTGEZTONBRGM2DINJTGUZTIMZVGMZDGNBTGMZTINBVGM2TGNBTGUZTSMZTGMYTGNBUGUZTKMZUGM2TGOJTGMZTAMZUGQ2TGNJTGQZTIMZZGMZTGMBTGUZTEMZVGM2DGNJTGEZTGMZSGM2DINJTGUZTIMZUGM4TGMZTGAZTKMZRGM3TIMJTGUZTKMZTGMYDGNBUGUZTMNBSGM2DINBTGMZTGMZUGQ2DGNBTGQZTKMZVGMZTGMZTGQ2DKMZVGM2DGNBTHEZTONBRGM2DINBTGQZTIMZUGQ2DGNZTG4ZTINBVGM3TIMJTGY2DEMZTGMYTGNBUGQZTMNBRGM2TGMJTGMZTCMZUGQ2TGNZUGEZTKMZRGMZTGMBTGUZTEMZWGQYTGNJTGUZTOMZYGM2DINBTG42DCMZUGMYTGMZTGAZTKMZSGM2TGNBTGUZTCMZTGM2DGNBUGUZTKMZUGM2TGNJTGMZTCMZUGQ2TGNRUGEZTMMZTGM3TGNZTGQ2DKMZUGM2DGNJTGUZTGMZRGM2DINBTG42DCMZVGM2TGMZTGEZTINBUGM3TIMJTGY2DEMZTGMYDGNBUGQZTONBRGM2TGNJTGMZTEMZUGQ2TGNJTGQZTKMZVGMZTGMRTGQ2DKMZUGM2DGNJTGYZTIMZSGM2DINJTGQZTKMZVGMYTGMZTGIZTKMZRGM3DIMJTGUZTKMZTGMZDGNBUGUZTIMZVGM2DGNJTGMZTCMZUGQ2TGNBTGQZTKNBRGM2DGMZTGQ2DKMZXGQYTGNBTGEZTGMZRGM2DINJTG42DCMZVGM2TGNZTHEZTINBUGM3TIMJTGQZTKMZTGMYDGNBUGUZTMNBRGM2TGOJTG4ZTQMZUGQ2TGNJTGQZTKMZZGMZTGMBTGQ2DKMZVGM2DGNRTGMZTGMZQGM2DINJTGUZTIMZUGMYTGMZTGEZTINBUGM2TGNBTGU2DCMZUGM2DGNBUGUZTKMZUGM2TGOJTGMZTAMZUGQ3DGNBTGQZTKMZSGM2DGNRTGQ2DKMZUGM2DGNJTGEZTGMZQGM2TGMJTGUZTIMZVGMYTGMZTGEZTINBVGM2TGNBTGUZTKMZXGQYTGNBUGQZTIMZUGM2DINBTGMZTCMZUGQ2TGNBTGUZTINBUGMZTGMJTGQ2DIMZVGM2DGNJUGEZTIMZTGM2DINJTGY2DCMZVGMYTGMZTGEZTINBUGM3DIMJTGUZTEMZUGM2TGNBUGUZTMNBSGM2DINBTGMZTCMZUGQ2DGNRUGEZTKMZSGM2DGNBTGQ2DKMZVGM2DGNJTGEZTONBRGM2DINBTGQZTIMZWGMZTGNZTG4ZTINBVGM2TGNBTGYZTGMZTGMYTGNBUGQZTMNBRGM3DGNBTGQZTEMZUGQ2TGNJTGQZTIMZVGMZTGMZTGQ2DMMZVGM2DGNJTGUZTOMZZGM2DINJTGUZTIMZVGM2TGMZTGEZTINBVGM3DIMJTGUZTEMZUGM3TGNBUGUZTKMZUGM2DGNJTG42DCMZUGQ2DGNBTGQZTKMZWGM2DGMRTGQ2DKMZUGM2DGNRTG4ZTGMZRGM2DINJTGUZTIMZVGQYTGNBTGMZTINBVGM2DGNJTGQZTKMZTGMYDGNBUGUZTKMZUGM2TGNJTG42DCMZUGQ2DGNZUGEZTIMZVGMZTGMBTGQ2DKMZWGQYTGNJTGIZTIMZTGM2DINJTGUZTIMZVGM4TGMZTGEZTINBVGM2TGNBTGU2DCMZUGM2DGNBUGUZTIMZUGM2TGOJTGMZTAMZVGMZDGNBTGQZTKNBRGM2DGNBTGQ2DKMZVGM2DGNBTHEZTGMZQGM2TGMJTG42DCMZVGM2TGMZTGAZTINBVGM3DIMRTGQZTSMZTGMYDGNJTGIZTKMZUGM2TGMJTGMZTEMZUGQ2TGNJTGQZTIMZZGM3TIMJTGQ2DIMZVGM2DGNJTGIZTIMZSGM2DINJTGQZTIMZVGMYTGMZTGEZTINBVGM3DIMJTGUZTCMZTGMYTGNBUGUZTONBRGM2TGMJTGMZTAMZVGMZDGNJTGQZTKMZVGMZTGMZTGQ2DKMZWGQZDGNBUGQZTGMZRGM2TGMJTGUZTIMZVGMZDGNBTGIZTINBVGM2TGNBTGQZTSMZTGMYTGNBUGUZTIMZUGM2TGMRTGQZTEMZUGQ2TGNBTGQZTKMZZGMZTGMJTGQ2DIMZWGQYTGNJTGUZTGMZRGM2DINBTG42DCMZVGM2TGMZTGAZTKMZRGM3DIMJTGUZTKMZTGMYTGNBUGQZTONBRGM2DGMJTGMZTEMZUGQ2TGNBTGQZTKMZVGM3TGOJTGQ2DKMZVGM2DGNRTGMZTGMZSGM2TGMJTGY2DCMZVGM2TGNZTHEZTINBVGM2DGNJTGQZTKMZTGMYTGNBUGUZTIMZUGM2TIMJTGQZTGMZUGQ2TGNZUGEZTIMZRGMZTGMJTGQ2DKMZVGM2DGNJTGUZTOMZZGM2DINBTG42DCMZUGM2TGMZTGIZTKMZRGM3DIMJTGYZTGMZTGM2TGNBUGUZTKMZUGM2TGOJTGMZTAMZUGQ2TGNJTGQZTKNBRGM2DGNBTGQ2DKMZUGM2TGNJTHEZTGMZRGM2DINBTG42DCMZVGQYTGNBTGQZTINBVGM2TGNBTGQZTSMZTGMYDGNBUGYZTIMZUGM2TGNJTGMZTEMZUGQ2TGNJTGQZTKMZRGMZTGMBTGUZTCMZVGM2DGNJTGEZTGMZRGM2DINJTGUZTIMZUGQ2DGMZTGEZTINBVGM3DIMJTGUZTCMZTGMZDGNBUGUZTKMZUGM2DINBTGMZTCMZUGQ2TGNRUGEZTKNBRGM2DGMZTGQ2DKMZWGQYTGNJTGEZTGMZQGM2TGMJTGUZTIMZVGMZDGNBTGUZTINBVGM3DIMRTGQZTSMZTGMYTGNBUGQZTMNBRGM2TGNJTG4ZTOMZUGQ2TGNJTGQZTKMZRGMZTGMRTGUZTCMZWGQYTGNRTGMZTOMZXGM2DINJTGUZTIMZWGMZTGMZTGEZTINBUGM3DIMJTGQ2DIMZXGM3TGNBUGQZTONBRGM2DGMJTGMZTGMZUGQ3DGNJTGQZTKMZVGM3TGOJTGQ2DKMZUGM2DGNJTGUZTGMZTGM2DINJTGQZTIMZVGMZDGNBTGYZTINBVGM2TGNBTGQ2DIMZTGMZDGNJTGEZTONBRGM2TGNRTGQZTEMZUGQ2TGNBTGUZTIMZVGMZTGMJTGQ2DIMZWGQYTGNJTGUZTGMZQGM2DINJTGQZTKMZUGM2TGMZTGEZTINBVGM2TGNBTGUZTKMZTGMYTGNBUGUZTKMZUGM2TGNJTG42DCMZUGQ2TGNJTGQZTKMZRGMZTGMBTGQ2DKMZVGM2DGNBTGUZTGMZSGM2TGMJTGY2DCMZVGM4TGMZTGAZTINBVGM2TGNBTGUZTSMZTGMYDGNJTGIZTIMZUGM2DINBTG4ZTOMZUGQ2TGNJTGQZTIMZZGMZTGMBTGUZTCMZVGM2DGNJTGUZTGMZRGM2DINJTGUZTIMZVGM4TGMZTGMZTINBUGM2DGNBTGUZTKMZTGMZDGNBUGUZTKMZUGM2DGOJTG42DCMZUGQ2DGNJTGQZTKNBRGM2DGMZTGQ2DKMZXGQYTGNRUGIZTGMZRGM2DINJTGY2DCMZVGMYTGMZTGEZTINBVGM2DGNJTGUZTKMZTGMYDGNJTGIZTMNBRGM2TGNJTG42DCMZUGQ2TGNRUGIZTINBUGMZTGMBTGUZTEMZVGM2DGNJTGEZTGMZUGM2DINJTGUZTIMZVGMYTGMZTGEZTINBVGM3DIMJTGYZTGMZXGM3TGNBUGUZTIMZUGM2TGNJTGMZTCMZUGQ2DGNZUGEZTKMZVGMZTGMJTGQ2DIMZXGQYTGNRUGIZTGMZQGM2DINBTG42DCMZVGM2TGMZTGIZTINBVGM2TGNBTGUZTKMZTGMZDGNBUGQZTONBRGM2DINBTG4ZTOMZUGQ2TGNBTGUZTKMZRGMZTGMRTGUZTCMZWGQYTGNJTGUZTGMZSGM2DINJTGQZTKMZUGM2TGMZTGEZTINBVGM2DGNBTGU2DCMZUGMZTGNBUGUZTONBRGM2TGMJTGMZTAMZUGQ2DGNZUGEZTKMZVGM3TGOJTGQ2DIMZXGQYTGNBTGUZTGMZRGM2DINJTGUZTIMZWGMZTGMZTGUZTINBVGM2TGNBTGUZTSMZTGMYDGNBUGUZTKMZUGM2TIMJTGQZTIMZUGQ2TGNJTGQZTIMZZGMZTGMJTGQ2DKMZVGM2DGNJUGEZTIMZUGM2DINJTGUZTKMZUGM2TGMZTGAZTINBWGM2DGNBTGUZTKMZTGMYTGNBUGUZTKMZUGM2TGMJTGMZTAMZVGMYTGNJTGQZTKMZRGMZTGMRTGQ2DKMZVGM2DGNBTHEZTGMZRGM2DINJTGUZTIMZUGQ2DGMZTGEZTINBVGM2DGNJTGQZTSMZTGMYTGNBUGUZTONBRGM2TGMJTGMZTCMZUGQ2TGNRUGEZTKMZRGMZTGMJTGQ2DIMZWGQYTGNJTGIZTIMZVGM2DINBTG42DCMZUGM2TGMZTGEZTINBUGM3DIMJTGUZTEMZUGM2DGNBUGUZTKMZUGM2TGNJTGMZTCMZUGQ2TGNJTGQZTMMZTGM3TGNZTGQ2DKMZVGM2DGNJTHEZTGMZRGM2DINBTG42DCMZVGMYTGMZTGEZTINBVGM2TGNBTGUZTKMZTGMZTGNBUGYZTKMZUGM2TGNJTGMZTEMZUGQ2TGNBTGQZTKMZVGMZTGMRTGUZTCMZXGQYTGNJTGIZTIMZWGM2DINJTGUZTIMZWGMZTGMZTGIZTKMZRGM3TIMJTGUZTEMZUGM3DGNBUGUZTIMZUGM3DGNZTGMZTCMZUGQ2TGNRUGEZTKMZVGMZTGMRTGQ2DKMZWGQZDGNBUGQZTGMZQGM2DINJTGUZTIMZVGM2TGNZUGEZTINBVGM2TGNBTGUZTSMZTGMYDGNBUGUZTMNBRGM2TGMRTGQZTGMZUGQ2TGNJTGQZTKMZZGMZTGMBTGQ2DKMZVGM2DGNJTHEZTGMZQGM2DINJTGUZTIMZVGM4TGMZTGAZTKMZSGM2DGNBTGU2DCMZUGMZTGNBUGUZTKMZUGM2DGOJTGMZTCMZUGQ2DGNRUGEZTKMZVGMZTGMBTGQ2DKMZWGQZDGNBTHEZTGMZTGM2DINBTGQZTIMZVGM2TGMZTGMZTINBVGM2TGNBTGQZTSMZXGQYTGNBUGQZTIMZUGM2DINBTGMZTCMZUGQ2TGNBTGQZTKMZRGMZTGMJTGQ2DIMZWGQYTGNJTGEZTGMZRGM2DINJTGY2DCMZVGMYTGMZTGEZTINBUGM3TIMJTGUZTKMZXGM4DGNBUGUZTMNBSGM2DINBTGMZTCMZUGQ2DGNRUGEZTKMZSGM2DGMRTGQ2DKMZVGM2DGNJTGUZTGMZRGM2DINJTGY2DCMZWGMZTGNZTG4ZTINBVGM2TGNBTGUZTSMZTGMYTGNBUGQZTONBRGM2TGNJTGMZTCMZUGQ2DGNZUGEZTIMZRGMZTGMZTGQ2DMMZVGM2DGNJTGUZTOMZZGM2DINJTGUZTIMZVGM2TGMZTGIZTINBVGM2DGNBTGUZTEMZUGM3TGNBUGUZTKMZUGM2DGNJTG42DCMZUGQ2DGNBTGQZTKMZRGMZTGMJTGQ2DIMZXGQYTGNRUGIZTGMZRGM2DINBTGQZTIMZVGM2TGMZTGAZTINBUGM3TIMJTGQZTCMZXGQYTGNBUGYZTKMZRGMZTINBTGM2DI==="
    
    plaintext = "nctf{"
    
    def decode(choice, ciphertext):
        '''
        功能 :
            根据参数不同选择不同的加密方式对进行解密
        参数 :
            choice :
                0 : 使用Base64的方式进行解密
                1 : 使用Base32的方式进行解密
                2 : 使用Base16的方式进行解密
            ciphertext :
                密文
        返回 :
            解密结果
        '''
        result = ""
        if choice == 0:
            try:
                result = base64.b64decode(ciphertext)
            except Exception as e:
                return ""
        elif choice == 1:
            try:
                result = base64.b32decode(ciphertext)
            except Exception as e:
                return ""
        elif choice == 2:
            try:
                result = base64.b16decode(ciphertext)
            except Exception as e:
                return ""
        else:
            return ""
        return result
    
    def encode(choice, plaintext):
        '''
        功能 :
            根据参数不同选择不同的加密方式对进行加密
        参数 :
            choice :
                0 : 使用Base64的方式进行加密
                1 : 使用Base32的方式进行加密
                2 : 使用Base16的方式进行加密
            plaintext :
                明文
        返回 :
            加密结果
        '''
    
        plaintext.replace('=','')
    
        if choice == 0:
            return base64.b64encode(plaintext)
        elif choice == 1:
            return base64.b32encode(plaintext)
        elif choice == 2:
            return base64.b16encode(plaintext)
        else:
            return ""
    
    for i in range(3):
        for j in range(3):
            for k in range(3):
                for l in range(3):
                    for m in range(3):
                        for n in range(3):
                            for o in range(3):
                                for p in range(3):
                                    for q in range(3):
                                        for r in range(3):
                                            order = str(i) + str(j) + str(k) + str(l) + str(m) + str(n) + str(o) + str(p) + str(q) + str(r)
                                            result = encode(i,encode(j,encode(k,encode(l,encode(m,encode(n,encode(o,encode(p,encode(q,encode(r,plaintext))))))))))
                                            print "Checking : " + order + " ..."
    
                                            # 判断结果是否正确 , 如果加密得到的结果的前几位和密文相同 , 我们大概就可以判断我们已经正确爆破出了加密顺序
                                            if(result.startswith('GM2DINJTGUZTIMZUGM4TGNZUGEZTINBUGM2TGNBTGUZTEMZUGMZDGNBUGUZTIMZUGM2DGOJTGMZTCMZUGQ2TGNRUGEZTKMZRGMZTGMJTGQ2DKMZXGQYTGNJTGEZTGMZRGM2DINBTGY2DCMZVGM2TGNZUGEZTINBVGM3DIMRTGQ2DIMZTGMYTGNBUGUZTMNBRGM2TGMRTGQZTEMZUGQ2TGNJTGQZTKMZZGMZTGMJTGQ2DKMZUGM2DGNJTGI')):
                                                print "Success!"
                                                print "The encode order is : " + order
                                                for ch in order:
                                                    ciphertext = decode(int(ch), ciphertext)
                                                print ciphertext
                                                exit(0)

    nctf{random_mixed_base64_encode}

    7.异性相吸

    打开压缩包发现密文,明文,分别用winhex按二进制打开

    题目提示xor异或运算可得

    01100110 01101100 01100001 01100111 00111010 01101110 01100011 01110100
    01100110 01111011 01111000 01101111 01110010 01011111 01111000 01101111
    01110010 01011111 01111000 01101111 01110010 01011111 01100010 01101001
    01110101 01100010 01101001 01110101 01100010 01101001 01110101 01111101

     新建一个hex文件粘贴上面数据可得

    flag:nctf{xor_xor_xor_biubiubiu}

    8.MD5

    MD5爆破补全,直接上代码块

    # -*- coding: utf-8 -*-
    import hashlib
    
    for ch1 in range(33,127):
        for ch2 in range(33,127):
            for ch3 in range(33,127):
                m='TASC'+chr(ch1)+'O3RJMV'+chr(ch2)+'WDJKX'+chr(ch3)+'ZM'
                md = hashlib.md5(m).hexdigest()
                if md[:5] == 'e9032':
                    print m

    可得 TASCJO3RJMVKWDJKXLZM 

    9.Vigenere

    暂时没有头绪,待解

  • 相关阅读:
    关于jquery尺寸的总结
    PhotoshopCC 如何使用动作文件ATN
    改变radio默认样式
    html中如何修改选中 用input做的搜索框 的边框颜色
    option触发事件两种方法总结
    用 CSS 隐藏页面元素的 5 种方法
    bootstrap模态框总结
    stop总结
    如何解决在chrome中自动完成表单后input出现黄色背景
    jquery实现显示和隐藏toggle()方法的使用
  • 原文地址:https://www.cnblogs.com/Acewipe/p/7588834.html
Copyright © 2011-2022 走看看