IDF实验室-CTF训练营-牛刀小试CTF
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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码而已
题目一个字符串:
\\u5927\\u5bb6\\u597d\\uff0c\\u6211\\u662f\\u0040\\u65e0\\u6240\\u4e0d\\u80fd\\u7684\\u9b42\\u5927\\u4eba\\uff01\\u8bdd\\u8bf4\\u5fae\\u535a\\u7c89\\u4e1d\\u8fc7\\u767e\\u771f\\u7684\\u597d\\u96be\\u3002\\u3002\\u0077\\u0063\\u0074\\u0066\\u007b\\u006d\\u006f\\u0072\\u0065\\u006d\\u006f\\u0072\\u0065\\u005f\\u0077\\u0065\\u0069\\u0062\\u006f\\u005f\\u0066\\u0061\\u006e\\u0073\\u007d
题目就一堆字符串,一个unicode编码,写个python脚本转换一下即可:
#!/usr/bin/env python # -*- coding: utf-8 -*- str = u‘\\u5927\\u5bb6\\u597d\\uff0c\\u6211\\u662f\\u0040\\u65e0\\u6240\\u4e0d\\u80fd\\u7684\\u9b42\\u5927\\u4eba\\uff01\\u8bdd\\u8bf4\\u5fae\\u535a\\u7c89\\u4e1d\\u8fc7\\u767e\\u771f\\u7684\\u597d\\u96be\\u3002\\u3002\\u0077\\u0063\\u0074\\u0066\\u007b\\u006d\\u006f\\u0072\\u0065\\u006d\\u006f\\u0072\\u0065\\u005f\\u0077\\u0065\\u0069\\u0062\\u006f\\u005f\\u0066\\u0061\\u006e\\u0073\\u007d‘ 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}
以上是关于IDF实验室-CTF训练营-牛刀小试CTF的主要内容,如果未能解决你的问题,请参考以下文章