zoukankan      html  css  js  c++  java
  • IDF实验室-CTF训练营-牛刀小试CTF

    自从开始玩CTF后,发现这个游戏还是比较有意思,发现了一个练习场地IDF实验室:http://ctf.idf.cn/

    刷刷里面的题目,今天完成了其中的牛刀小试,分享一下解题思路:

    1. 被改错的密码

    题目为:

    从前有一个熊孩子入侵了一个网站的数据库,找到了管理员密码,手一抖在数据库中修改了一下,现在的密码变成了 cca9cc444e64c8116a30la00559c042b4,那个熊孩子其实就是我!肿么办求解!在线等,挺急的。。

    PS:答案格式wctf{管理员原密码}

    第一眼看上去cca9cc444e64c8116a30la00559c042b4是一个MD5,但是确是33位,那么循环去掉一位解密,直到解出来正确:(http://pmd5.com)MD5在线解密

    最后去掉l字符,解密成功

    所以flag是wctf{idf}

     

    2. 啥?

    题目就一张图片和一串文字,看来只有在图片上做文章了,下载图片,拖入UltraEdit中去,

    看了看,在底部发现了ctf的字样,

    复制出来:wctf{mianwubiaoqing__},提交,答案不对。

    根据第一题,这个好像少了个w,加上去,

    wwctf{mianwubiaoqing__}通过。

    3. ASCII码而已

    题目一个字符串:

    u5927u5bb6u597duff0cu6211u662fu0040u65e0u6240u4e0du80fdu7684u9b42u5927u4ebauff01u8bddu8bf4u5faeu535au7c89u4e1du8fc7u767eu771fu7684u597du96beu3002u3002u0077u0063u0074u0066u007bu006du006fu0072u0065u006du006fu0072u0065u005fu0077u0065u0069u0062u006fu005fu0066u0061u006eu0073u007d

     

    题目就一堆字符串,一个unicode编码,写个python脚本转换一下即可:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    str = u'u5927u5bb6u597duff0cu6211u662fu0040u65e0u6240u4e0du80fdu7684u9b42u5927u4ebauff01u8bddu8bf4u5faeu535au7c89u4e1du8fc7u767eu771fu7684u597du96beu3002u3002u0077u0063u0074u0066u007bu006du006fu0072u0065u006du006fu0072u0065u005fu0077u0065u0069u0062u006fu005fu0066u0061u006eu0073u007d'
    str = str.encode('utf-8')
    print str

    得到flag:

    wctf{moremore_weibo_fans}

    4. 摩斯密码

    用python脚本跑一下摩斯密码:

    # -*- coding:utf-8 -*-
    # 摩斯密码表(自己可定义加密方式...)
    CODE = {
            # 26个字母
            'A': '.-',     'B': '-...',   'C': '-.-.',
            'D': '-..',    'E': '.',      'F': '..-.',
            'G': '--.',    'H': '....',   'I': '..',
            'J': '.---',   'K': '-.-',    'L': '.-..',
            'M': '--',     'N': '-.',     'O': '---',
            'P': '.--.',   'Q': '--.-',   'R': '.-.',
            'S': '...',    'T': '-',      'U': '..-',
            'V': '...-',   'W': '.--',    'X': '-..-',
            'Y': '-.--',   'Z': '--..',
     
            # 10个数字
            '0': '-----',  '1': '.----',  '2': '..---',
            '3': '...--',  '4': '....-',  '5': '.....',
            '6': '-....',  '7': '--...',  '8': '---..',
            '9': '----.',
     
            # 16个标点符号
            ',': '--..--', '.': '.-.-.-', ':': '---...', ';': '-.-.-.',
            '?': '..--..', '=': '-...-',  "'": '.----.', '/': '-..-.',
            '!': '-.-.--', '-': '-....-', '_': '..--.-', '(': '-.--.',
            ')': '-.--.-', '$': '...-..-','&': '. . . .','@': '.--.-.'
     
            # 下面还可自行添加密码字典
     
    }
    # print CODE
    # 反转字典(作为解密摩斯密码的字典)
    UNCODE = dict(map(lambda t:(t[1],t[0]),CODE.items()))
    # print UNCODE
     
    '''
    将字符串转换成摩斯密码
    params:需要转换的字符串
    '''
    def stringToMorseAlphabet(msg):
        # message用于保存加密结果
        message = ''
        # msg = raw_input('Message:')
        # msg = 'this is test'
        print msg + '   ///对应的摩斯密码为///',
        for c in msg:
            if c == ' ':
                message += ' '
            else:
                # upper():将所有小写字母转换成大写字母
                message += CODE[c.upper()] + ' '
        return message
     
    '''
    将摩斯密码还原成字符串
    params:需要还原的摩斯码
    '''
    def morseAlphabetToString(morseCode):
        # message用于保存解密结果
        message = ''
        list = morseCode.split(' ')
        # print list
        #print morseCode + '   ///对应的明文为///',
        for s in list:
            if s == '':
                message += ' '
            else:
                message += UNCODE[s]
        return message
     
     
    # Test
    # print stringToMorseAlphabet('I love you')
    #print morseAlphabetToString(stringToMorseAlphabet('what the fuck!'))
    print morseAlphabetToString('--  ---  .-.  ...  .  -.-.  ---  -..  .  ')

    得到flag:

    wctf{M O R S E C O D E}

    但是有点无语,提交不正确,改成小写,把空格去了提交过了,有点不知所措:

    wctf{morsecode}

    5.聪明的小羊

    首先看题目描述:

    一只小羊跳过了栅栏,两只小样跳过了栅栏,一坨小羊跳过了栅栏...

    tn c0afsiwal kes,hwit1r  g,npt  ttessfu}ua u  hmqik e {m,  n huiouosarwCniibecesnren.

    目测应该是栅栏密码。何为栅栏密码,这种密码和凯撒密码类似都是移位密码,不同的事,栅栏密码先将一个字符串分成N组,然后依次取出每个组的第一个字符第二个字符组合成新的数据。

    然后暴力破解即可,穷举其长度的因子:用python写个脚本跑一下:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    def zhanlan(midata = None, zu = 0, len = 0 ):
        mindata=''
        for i in range(zu):
            for j in range(len):
                mindata = mindata+midata[i+zu*j]
        
        return mindata
    
    
    if __name__ == '__main__':
        midata="tn c0afsiwal kes,hwit1r  g,npt  ttessfu}ua u  hmqik e {m,  n huiouosarwCniibecesnren."
        for zu in range(1,len(midata),1):
            if len(midata)%zu == 0:
                print zhanlan(midata,zu,len(midata)/zu)

    最后得到flag:

    wctf{C01umnar}

  • 相关阅读:
    多进程编程
    Python 的下载安装
    cnBlogs windows LIves Writes 安装
    第四章网页文字编排设计
    第三章网页图形图像设计
    第二章网页创意设计思维和方法
    1.3-1.4网页设计的定位和流程
    1.2网页设计的构成要素和特性
    网页编辑常用快捷方式+学习技巧+网站开发流程
    css选择器2——伪类选择器
  • 原文地址:https://www.cnblogs.com/wangleiblog/p/5936238.html
Copyright © 2011-2022 走看看