题目简述

“锟斤拷烫烫烫”明显在暗示编码错误,下载附件,发现是一种没见过的编码:
+j9k-+Zi8-+T2A-+doQ-flag+/xo-+AAo-+AAo-a9736d8ad21107398b73324694cbcd11f66e3befe67016def21dcaa9ab143bc4405be596245361f98db6a0047b4be78ede40864eb988d8a4999cdcb31592fd42c7b73df3b492403c9a379a9ff5e81262+AAo-+AAo-+T0Y-+Zi8-flag+dSg-AES+UqA-+W8Y-+ToY-+/ww-key+Zi8-+Tgs-+l2I-+j9k-+iEw-+W1c-+doQ-sha256+/wg-hash+UDw-+doQ-+XwA-+WTQ-+Zi8-b34edc782d68fda34dc23329+/wk-+AAo-+AAo-+YkA-+TuU-+i/Q-+/ww-codepage+dx8-+doQ-+X4g-+kc0-+iYE-+VUo-+/wg-+AAo-

UTF-7解码

经过尝试,知道这是utf-7编码(谁丧心病狂会用这种啊),解码后有这样的信息:
这是你的flag
a9736d8ad21107398b73324694cbcd11f66e3befe67016def21dcaa9ab143bc4405be596245361f98db6a0047b4be78ede40864eb988d8a4999cdcb31592fd42c7b73df3b492403c9a379a9ff5e81262
但是flag用AES加密了,key是下面这行字的sha256(hash值的开头是b34edc782d68fda34dc23329)
所以说,codepage真的很重要啊(
在线转换,得到key为:
b34edc782d68fda34dc2332967273b0f0900a0ebd0dcec48467851bc6117bad1

获得flag

通过aes解密后得到flag:

(注意所有都是hex)

踩坑总结

1.第一次做因为不知道utf-7而卡了很久
2.附上一些不那么常见的编码:

参考:https://blog.csdn.net/q20010619/article/details/120942973

感谢丁神的总结博客链接
常见编码

下面以加密下方flag为例

flag{QLNU_yyds!}

1

base家族

工具:base全家桶http://wiki.qlnuctf.cn/course/13/task/684/show
base16(十六进制)

666C61677B514C4E555F79796473217D

1

base32

MZWGCZ33KFGE4VK7PF4WI4ZBPU======

1

base58
base62

http://decode-base62.nichabi.com/?input
base64

ZmxhZ3tRTE5VX3l5ZHMhfQ==

1

base85

Ao(mgHVmI3<F:#sA9/oB

1

base91

@iH<,{b*+6Gs1QejHEAL

1

base92

F#S<YR]=h7^%q3jIJN2g

1

base64x-转表base64

base64 的乱序版
参考链接

import base64
import string

str1 = “x2dtJEOmyjacxDemx2eczT5cVS9fVUGvWTuZWjuexjRqy24rV29q”

string1 = “ZYXABCDEFGHIJKLMNOPQRSTUVWzyxabcdefghijklmnopqrstuvw0123456789+/“
string2 = “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/“

print (base64.b64decode(str1.translate(str.maketrans(string1,string2))))

1
2
3
4
5
6
7
8
9

str1是要解密的代码
string1是改过之后的base64表
利用cyberchef 工具也是可以的
rot13
aes-des-3des-rc4-rabbit

需要密码,格式很像base,但是是以U2开头的

U2FsdGVkX1/SvkGkNmN/u52RqOQ=

1

EBCBIC

啌亣捆咇凁攨mpm檯剤仯蝠蝰?

1

使用010解密即可

flag{we1c0me_t0_redhat2021}

1

例题:2021红帽-签到
gzip

eJxLy0lMr05KSTEwM0pOTrFMNk9ONkhJNjYwNDI3SLVMSbJMMk5NrgUA9cQMNg==

1

eJx开头的等号结尾的

网站解密:https://codebeautify.org/gzip-decompress-online

jwt

因为 jwt 分为三部分,之间通过点号分隔,前两部分就是 base64 编码的所以直接可以 base64 解码

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

1

辨别方法:eyJ

解密网站:https://jwt.io/
希尔密码

码表

abcdefghijklmnopqrstuvwxyz ,.

1

常见密钥为一个网址,比如

在这里插入图片描述

解密网址:http://www.atoolbox.net/Tool.php?Id=914

云影密码

有1,2,4,8这四个数字,可以通过加法来用这四个数字表示0-9中的任何一个数字,列如0=28, 也就是0=2+8,同理7=124, 9=18。这样之后再用1-26来表示26个英文字母,就有了密文与明文之间的对应关系。引入0来作为间隔,以免出现混乱。所以云影密码又叫“01248密码”

#!/usr/bin/python

-- coding=utf8 --

“””

@Author : pig

@CreatedTime:2019-11-2423:54:02

@Description : https://www.jianshu.com/p/b5aa5cf60f83

“””

def de_code(c):
dic = [chr(i) for i in range(ord(“A”), ord(“Z”) + 1)]
flag = []
c2 = [i for i in c.split(“0”)]
for i in c2:
c3 = 0
for j in i:
c3 += int(j)
flag.append(dic[c3 - 1])
return flag

def encode(plaintext):
dic = [chr(i) for i in range(ord(“A”), ord(“Z”) + 1)]
m = [i for i in plaintext]
tmp = [];flag = []
for i in range(len(m)):
for j in range(len(dic)):
if m[i] == dic[j]:
tmp.append(j + 1)
for i in tmp:
res = “”
if i >= 8:
res += int(i/8)“8”
if i%8 >=4:
res += int(i%8/4)
“4”
if i%4 >=2:
res += int(i%4/2)“2”
if i%2 >= 1:
res += int(i%2/1)
“1”
flag.append(res + “0”)
print (“”.join(flag)[:-1])

c = input(“输入要解密的数字串:”)
print (de_code(c))
m_code = input(“请输入要加密的数字串:”)
encode(m_code)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

PGP词汇表

链接https://baike.baidu.com/item/PGP%E8%AF%8D%E6%B1%87%E8%A1%A8/22718129
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GQHdaRFc-1635086332410)(F:%5C_%E7%AC%94%E8%AE%B0%5Cmdpic%5C3.MISC%E6%80%BB%E7%BB%93_pic%5C1634728790155-d4c77211-966c-4707-b20b-8cf16fcc6845.jpeg)]
UUencode

Uuencode将输入资料以每三个字节为单位进行编码,如此重复进行。如果最后剩下的资料少于三个字节,不够的部份用零补齐,很像base64
特点:包含!”#¥%&‘()*+=’” 等等字符
Unicode

Unicode 在一个字符集中包含了世界上所有文字和符号,统一编码,来终结不同编码产生乱码的问题

字符编码 UTF-8

Unicode 统一了所有字符的编码,是一个 Character Set,也就是字符集,字符集只是给所有的字符一个唯一编号,但是却没有规定如何存储

一个字符使用四个字节存储,也就是 32 位,这样就能涵盖现有 Unicode 包含的所有字符,这种编码方式叫做 UTF-32(UTF 是 UCS Transformation Format 的缩写)

在存储和网络传输中,通常使用更为节省空间的变长编码方式 UTF-8,UTF-8 代表 8 位一组表示 Unicode 字符的格式,使用 1 - 4 个字节来表示字符

U+ 0000 ~ U+ 007F: 0XXXXXXX
U+ 0080 ~ U+ 07FF: 110XXXXX 10XXXXXX
U+ 0800 ~ U+ FFFF: 1110XXXX 10XXXXXX 10XXXXXX
U+10000 ~ U+1FFFF: 11110XXX 10XXXXXX 10XXXXXX 10XXXXXX
    1
    2
    3
    4

可以看到,UTF-8 通过开头的标志位位数实现了变长。对于单字节字符,只占用一个字节,实现了向下兼容 ASCII,并且能和 UTF-32 一样,包含 Unicode 中的所有字符,又能有效减少存储传输过程中占用的空间

RTF格式下的unicode编码

明显特点:\u-65432?\u-65420

转换脚本

s=r”\u-65432?\u-65420?\u-65420?\u-65424?\u-65421?\u-65478?\u-65489?\u-65489?\u-65418?\u-65426?\u-65437?\u-65420?\u-65434?\u-65491”
l=list(s[3:-1].split(r”?\u-“))
flag=””
for i in l:
flag+=chr(65536-int(i))
print(flag)

1
2
3
4
5
6

autokey

自动密钥密码(Autokey Cipher)也是多表替换密码,与维吉尼亚密码密码类似,但使用不同的方法生成密钥。通常来说它要比维吉尼亚密码更安全。自动密钥密码主要有两种,关键词自动密钥密码和原文自动密钥密码
解密网站:https://www.wishingstarmoye.com/ctf/autokey
http://www.practicalcryptography.com/ciphers/autokey-cipher/

python2 解码

from pycipher import Autokey

print Autokey(‘CULTURE’).encipher(‘helloworld’)
print Autokey(‘CULTURE’).decipher(‘jyweinsypo’)

1
2
3
4
5

工具下载:https://github.com/hitcxy/break_autokey
工具使用

需要安装pycipher库 pip2 install pycipher
修改break_autokey.py中的’ctext’ 变量
python2 break_autokey.py

1
2
3

其他稀奇古怪编码

https://www.dcode.fr/
可以用这个网站
特殊编程语言
JS变种

已下这些都是js,打开console运行一下就能得到flag
brainfuck

http://www.hiencode.com/brain.html
jsfuck

用六个不同的符号

**也称颜文字 **゚ω゚ノ= /`m´)ノ ~┻━┻ //´∇`/ [’_’]; o=(゚ー゚)
将JS代码转换成常用的网络表情
http://utf-8.jp/public/aaencode.html
jjencode

demo地址
http://utf-8.jp/public/jjencode.html
xxencode
jother

jother是一种运用于javascript语言中利用少量字符构造精简的匿名函数方法对于字符串进行的编码方式。其中8个少量字符包括: ! + ( ) [ ] { } 。只用这些字符就能完成对任意字符串的编码。不同于jsfuck,它多了{}这两个大括号
解密工具 由于jother执行之后所得到的结果分为字符串和函数两种,所以解密的方法也不相同。
字符串:直接在Console界面中输入并回车即可
函数: 对于函数类型的jother加密结果,我们只需要将最后的()改成.toString()即可

ctf中js的总结

npiet

有关颜色的编程语言

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uf50t0H3-1635086332411)(F:%5C_%E7%AC%94%E8%AE%B0%5Cmdpic%5C3.MISC%E6%80%BB%E7%BB%93_pic%5C1634640451368-b0297fe9-fed0-4432-94ee-2eb2af4bed01.png)]

更多查看https://www.jianshu.com/p/ed929cf72312

ALPHUCK

字和符号,统一编码,来终结不同编码产生乱码的问题

⬆︎TOP