题目难度:★
题目描述:凯撒大帝在很早的时候发明了这个,你能解密出来吗?flag格式为:qsnctf{xxx}。
下载附件,题目提示告诉我们是凯撒了,一个简单的移位操作。
使用在线解码网站:凯撒密码在线加密解密
def decode_caesar_cipher(cipher):
decoded_cipher = ""
for char in cipher:
if char.isalpha():
shift = 5
base = ord('a')
if char.islower():
decoded_cipher += chr((ord(char) - base - shift) % 26 + base)
else:
decoded_cipher += chr((ord(char) - base - shift) % 26 + base)
else:
decoded_cipher += char
return decoded_cipher
cipher = "vxshyk{g9g9g099-hg33-4f60-90gk-ikff1f36953j}"
decoded_cipher = decode_caesar_cipher(cipher)
print(decoded_cipher)
qsnctf{b9b9b099-cb33-4a60-90bf-dfaa1a36953e}
题目难度:★
题目描述:请用一组绿宝石和村民兑换一组BASE!flag格式为:qsnctf{xxx}。
下载解压文件,扫一眼,base家族就那几个,base16,base32,base64等等等符合这题的就只有base64。
使用在线脚本:Base64 编码/解码 - 在线工具 (toolhelper.cn)
当然,我们同样可以在kali中解base64.
import base64
s = 'cXNuY3RmezY4NjkwOGJjLTFiZjItNGMxOS04YTAxLWIyYzc3NjAwOTkyOH0='
sw = bytes(s,'utf-8')
st = base64.b64decode(sw)
print(st)
qsnctf{686908bc-1bf2-4c19-8a01-b2c776009928}
题目难度:★
题目描述:BASE有一个大家族,flag格式为:qsnctf{xxx}。
下载附件一看,没有=
,不可能是base32和base64了。
Base16编码使用16个ASCII可打印字符(数字0-9和字母A-F)对任意字节数据进行编码。Base16先获取输入字符串每个字节的二进制值(不足8比特在高位补0),然后将其串联进来,再按照4比特一组进行切分,将每组二进制数分别转换成十进制,在下述表格中找到对应的编码串接起来就是Base16编码。可以看到8比特数据按照4比特切分刚好是两组,所以Base16不可能用到填充符号“=”。
Base16 编码表
值 | 编码 | 值 | 编码 |
---|---|---|---|
0 | 0 | 8 | 8 |
1 | 1 | 9 | 9 |
2 | 2 | 10 | A |
3 | 3 | 11 | B |
4 | 4 | 12 | C |
5 | 5 | 13 | D |
6 | 6 | 14 | E |
7 | 7 | 15 | F |
使用在线网站解:Base16编码解码,Base16在线转换工具
得到一串字符,根据题目提示base大家族
,这可能是一个base16 -> base32 ->base64。ok,思路有了,我们继续往下走。
Base32编码是使用32个可打印字符(字母A-Z和数字2-7)对任意字节数据进行编码的方案,编码后的字符串不用区分大小写并排除了容易混淆的字符
RFC 4648 Base32 字母表
值 | 符号 | 值 | 符号 | 值 | 符号 | 值 | 符号 | |||
0 | A | 8 | I | 16 | Q | 24 | Y | |||
1 | B | 9 | J | 17 | R | 25 | Z | |||
2 | C | 10 | K | 18 | S | 26 | 2 | |||
3 | D | 11 | L | 19 | T | 27 | 3 | |||
4 | E | 12 | M | 20 | U | 28 | 4 | |||
5 | F | 13 | N | 21 | V | 29 | 5 | |||
6 | G | 14 | O | 22 | W | 30 | 6 | |||
7 | H | 15 | P | 23 | X | 31 | 7 | |||
填充 | = |
出现了=
号,很明显的base64特征。跟我们想的一样。
Base64编码是使用64个可打印ASCII字符(A-Z、a-z、0-9、+、/)将任意字节序列数据编码成ASCII字符串,另有“=”符号用作后缀用途。
Base64 索引表
数值 | 字符 | 数值 | 字符 | 数值 | 字符 | 数值 | 字符 | |||
---|---|---|---|---|---|---|---|---|---|---|
0 | A | 16 | Q | 32 | g | 48 | w | |||
1 | B | 17 | R | 33 | h | 49 | x | |||
2 | C | 18 | S | 34 | i | 50 | y | |||
3 | D | 19 | T | 35 | j | 51 | z | |||
4 | E | 20 | U | 36 | k | 52 | 0 | |||
5 | F | 21 | V | 37 | l | 53 | 1 | |||
6 | G | 22 | W | 38 | m | 54 | 2 | |||
7 | H | 23 | X | 39 | n | 55 | 3 | |||
8 | I | 24 | Y | 40 | o | 56 | 4 | |||
9 | J | 25 | Z | 41 | p | 57 | 5 | |||
10 | K | 26 | a | 42 | q | 58 | 6 | |||
11 | L | 27 | b | 43 | r | 59 | 7 | |||
12 | M | 28 | c | 44 | s | 60 | 8 | |||
13 | N | 29 | d | 45 | t | 61 | 9 | |||
14 | O | 30 | e | 46 | u | 62 | + | |||
15 | P | 31 | f | 47 | v | 63 | / |
得到flag。
qsnctf{531e3c0e-aca4-4fe3-a818-e3ee3a887444}
题目难度:★
题目描述:摩尔斯电码(Morse code)也被称作摩斯密码,是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。它发明于1837年,是一种早期的数字化通信形式。不同于现代化的数字通讯,摩尔斯电码只使用零和一两种状态的二进制代码,它的代码包括五种:短促的点信号“・”,保持一定时间的长信号“—”,表示点和划之间的停顿、每个词之间中等的停顿,以及句子之间长的停顿。flag格式为:qsnctf{xxx}。
下载附件,题目告诉我们是摩斯密码了,我们只需要把中间一部分解出来就行。
在线网站:在线摩斯密码翻译器
# 摩斯电码解码映射
morse_code_dict = {
".-": "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",
"-----": "0", ".----": "1", "..---": "2", "...--": "3", "....-": "4",
".....": "5", "-....": "6", "--...": "7", "---..": "8", "----.": "9",
".-.-.-": ".", "---...": ":", "--..--": ",", "-.-.-.": ";", "..--..": "?",
"-...-": "=", ".----.": "'", "-..-.": "/", "-.-.--": "!", "-....-": "-",
"..--.-": "_", ".-..-.": '"', "-.--.": "(", "-.--.-": ")", "...-..-": "$",
".-...": "&", ".--.-.": "@", ".-.-.": "+",
} # 摩斯密码字典
# 摩斯电码字符串
morse_code_str = ".----/-----/.-/----./...--/./-----/-.../-....-/....-/...--/...../...--/-....-/....-/---../....-/.-/-....-/----./..-./..---/--.../-....-/-.-./..-./-..../-..../-.-./--.../.-/---../-.../..---/...--/....."
# 将摩斯电码字符串分割为字符对
morse_code_chars = morse_code_str.split("/")
# 解码摩斯电码
decoded_str = ''.join(morse_code_dict[char] for char in morse_code_chars)
print(decoded_str)
qsnctf{10A93E0B-4353-484A-9F27-CF66C7A8B235}
题目难度:★
题目描述:今天高高兴兴出门去,遇上一只熊。嗷呜呜!!出题人危险了。
下载附件,看到熊说话了?嗯?
不太懂,上网搜一下
简单的说,熊曰明显有别于传统火星文和佛曰的地方
具有智能的文本压缩处理能力(使用了哈夫曼算法)
针对部分汉字自动转换的场景进行了优化(繁体和简体变化不影响解密)
界面更为友好易用(支持移动端)
在线解码:与熊论道/熊曰加密
大家可以去搜索一下相关知识,说不定可以找到什么相关姿势(划掉),呸,知识!
qsnctf{80038e81-5f67-4085-a70e-77a3fd74cf96}
题目难度:★
题目描述:你知道百家姓是什么吗?flag格式为:qsnctf{xxx}。
下载附件,看一眼,ok不会解。上网搜在线解码器。
在线工具:百家姓加密解密在线工具
复制解出来的文本,去掉前面的ci力磁链。查看解出来的文本,十六进制(确信)!使用在线工具解
在线工具:[十六进制转文本-在线免费十六进制转文本工具-即时工具
全部复制进去解,诶居然解出来了。复制解出来的文本,看到flag
qsnctf{e20491a9-97ad-404a-9f29-0810bd5c491e}
题目难度:★★
题目描述:ASCII码和凯撒大帝有一个约定,你能得到FLAG吗?flag格式为:qsnctf{xxx}。MD5只取花括号中的UUID!
ok先别急着启动!先看一下题目,ASCII和凯撒。应该是ASCII转文本了,还有MD5值?先启动再说。
拿到一串字符,进行解码。(每个人拿到的不一样!)
这解一下就很清晰了啊,ASCII转文本,文本再进行凯撒解码,但是flag后三位被隐藏了,应该需要我们爆破出来。
凯撒解密
def decode_caesar_cipher(cipher):
decoded_cipher = ""
for char in cipher:
if char.isalpha():
shift = 1
base = ord('a')
if char.islower():
decoded_cipher += chr((ord(char) - base - shift) % 26 + base)
else:
decoded_cipher += chr((ord(char) - base - shift) % 26 + base)
else:
decoded_cipher += char
return decoded_cipher
cipher = "MSHN: xzujam{93j57850-i783-4726-il3h-07m8l68kk***} TK5:0k40691186mk5l49m5li024045l3jjk8"
decoded_cipher = decode_caesar_cipher(cipher)
print(decoded_cipher)
拿到转换后的值
flag: wytizl{93i57850-h783-4726-hk3g-07l8k68jj***} md5:0j40691186lj5k49l5kh024045k3iij8
再对flag的后三位进行爆破。
# coding: utf-8
import string
import hashlib
dic1 = string.digits + string.ascii_lowercase + string.ascii_uppercase
for i1 in dic1:
for i2 in dic1:
for i3 in dic1:
t = '93c57850-b783-4726-be3a-07f8e68dd' + i1 + i2 + i3
md5 = hashlib.md5(t.encode('utf-8')).hexdigest()
# print t
if md5[:32] == '0d40691186fd5e49f5eb024045e3ccd8':
print(t)
得到最后三位cc3
qsnctf{93c57850-b783-4726-be3a-07f8e68ddcc3}
ojbk的,这里也是成功的将A2-crypto成功解决了(所以这个A1,A2是啥意思)!
休息一下,继续我们的刷题!
作为CTF的新手,我非常渴望在这里向各位师傅请教,并期待得到您的宝贵指导。如果我有任何错误或需要改进的地方,请不吝赐教,我会虚心接受并努力改正。