題目鏈接:https://ctf.bugku.com/challenges
題解:
打開題目,觀察這一串數組,發現每一組都是由0和1組成,且長短不一;找到了mrose和ascii的對應表,mrose和ascii對應表鏈接:https://pan.baidu.com/s/1qaE5AjcORTBrI_In6TNaSw
雖然原理倒是懂了,可是不可能一個一個的進行對比啊,太浪費時間咯。因此,無聊至極,寫了一個c#代碼進行轉換,話不多說,源代碼如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp1 { class Program { static void Main(string[] args) { string oldstr; oldstr = Console.ReadLine(); string []str = oldstr.Split(' '); for (int i = 0; i < str.Length; i++) { switch (str[i]) { case "01": Console.Write("A"); break; case "1000": Console.Write("B"); break; case "1010": Console.Write("C"); break; case "100": Console.Write("D"); break; case "0": Console.Write("E"); break; case "0010": Console.Write("F"); break; case "110": Console.Write("G"); break; case "0000": Console.Write("H"); break; case "00": Console.Write("I"); break; case "0111": Console.Write("J"); break; case "101": Console.Write("K"); break; case "0100": Console.Write("L"); break; case "11": Console.Write("M"); break; case "10": Console.Write("N"); break; case "111": Console.Write("O"); break; case "0110": Console.Write("P"); break; case "1101": Console.Write("Q"); break; case "010": Console.Write("R"); break; case "000": Console.Write("S"); break; case "1": Console.Write("T"); break; case "001": Console.Write("U"); break; case "0001": Console.Write("V"); break; case "011": Console.Write("W"); break; case "1001": Console.Write("X"); break; case "1011": Console.Write("Y"); break; case "1100": Console.Write("Z"); break; case "01111": Console.Write("1"); break; case "00111": Console.Write("2"); break; case "00011": Console.Write("3"); break; case "00001": Console.Write("4"); break; case "00000": Console.Write("5"); break; case "10000": Console.Write("6"); break; case "11000": Console.Write("7"); break; case "11100": Console.Write("8"); break; case "11110": Console.Write("9"); break; case "11111": Console.Write("0"); break; case "001100": Console.Write("?"); break; case "10010": Console.Write("/"); break; case "100001": Console.Write("-"); break; case "010101": Console.Write("."); break; case "110011": Console.Write(","); break; case "011010": Console.Write("@"); break; case "111000": Console.Write(":"); break; case "101010": Console.Write(";"); break; case "10001": Console.Write("="); break; case "011110": Console.Write("'"); break; case "101011": Console.Write("!"); break; case "001101": Console.Write("_"); break; case "010010": Console.Write("\""); break; case "10110": Console.Write("("); break; case "101101": Console.Write(")"); break; case "0001001": Console.Write("$"); break; case "01000": Console.Write("&"); break; } } } } }
跑下代碼,運行結果如下:
得到:
FLAGM0RSE_CODE_1S_INTEREST1N9!
但是問題來了,提交flag為 FLAG{M0RSE_CODE_1S_INTEREST1N9!} 時不正確,可能是因為要求答案為小寫吧,於是修改flag為小寫,注意其中有字符“1”、“0”、“9”,不要與字母弄混了喲
所以本題flag:
flag{m0rse_code_1s_interest1n9!}