CTF中常见编码

我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第4篇文章,点击查看活动详情

引文

CTF比赛中编码题目是非常常见的通常作为题目中的一小步来作为考点,今天带大家总结一下CTF中常用的编码类型。

BASE全家桶

Base系列:Base64 Base32 Base16

我们以Base64编码为例,Base64将输入字符串按字节切分,用字节对应的二进制值(若不足8比特则高位补0),然后将这些二进制数值串联起来,再按照6比特一组进行切分,接着一组若不足6比特则末尾补0。二进制值转成十进制,找到对应的符号串联起来就是Base64编码结果。

我们举例:base64(XINO)


WElOTw== 

这是比较常见的,还有不常见的如base58,base62,base100等,其具有一些不一样的特征,有兴趣的可以自行了解。

凯撒密码

密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密恺撒变换变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。

例子:


synt{zlharw62onc209mm} 

可以看到毫无规律,可以用网站或脚本编写解密:


#!/usr/bin/python
# -*- coding: UTF-8 -*-
print("凯撒密码解密")
#密文
str = 'synt{zlharw62onc209mm}'
#密钥(平移位数)
my = 12
print(str,"密钥",my)
print("密文:", end='')
for i in str:mw = ord(i)if (64 < mw < 91):#大写字母jm = mw + myif jm > 90:jm = (mw - 26) + myprint(chr(jm), end='')else:print(chr(jm), end='')elif (96 < mw < 123):#小写字母jm = mw + myif jm > 122:jm = (mw - 26) + myprint(chr(jm), end='')else:print(chr(jm), end='')else:#数字和特殊字符不做修改jm = mw + 0print(chr(jm), end='') 

如上当偏移为13是得到结果


flag{myunej62bap209zz} 

ROT13

ROT13回转13位rotate by 13 places,有时中间加了个连字符称作ROT-13)是一种简易的替换式密码。它是一种在英文网络论坛用作隐藏八卦(spoiler)、妙句、谜题解答以及某些脏话的工具,目的是逃过版主或管理员的匆匆一瞥。ROT13被描述成“杂志字谜上下颠倒解答的Usenet点对点体”。ROT13 也是过去在古罗马开发的凯撒加密的一种变体。

看百度简介就了解差不多了,凯撒变体,解密方式差不多就不细讲了。

JSFUCK

jsfuck源于一门编程语言brainfuck,使用8种特定的符号来编写代码。而jsfuck也是沿用了这个思想,它仅仅使用6种符号来编写代码。它们分别是 (、)、+、[、]、!.

实例:


false =>![]
true=>!![]
undefined =>[][[]]
NaN =>+[![]]
0 =>+[]
1 =>+!+[]
2 =>!+[]+!+[]
10=>[+!+[]]+[+[]]
Array =>[]
Number=>+[]
String=>[]+[]
Boolean =>![]
Function=>[]["filter"]
eval=>[]["filter"]["constructor"]( CODE )()
window=>[]["filter"]["constructor"]("return this")() 

XXencode/AAencode/UUencode

因为名字差不多就放一起了。就拿AAencode来说,其原理是将JS编码转换为了颜文字,十分有趣。比如:


゚ω゚ノ= /`m´)ノ ~┻━┻ //*´∇`*/ ['_']; o=(゚ー゚)=_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\'; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];(゚Д゚) [゚o゚]='"';(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+(゚Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚Θ゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (c^_^o)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚Θ゚)+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚Θ゚)+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚Θ゚)+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚o゚]) (゚Θ゚)) ('_'); 

有兴趣的小伙伴可以看看这是什么意思。

社会主义核心价值观

看标题就知道是利用社会主义核心价值观编码,编码后类似于:富强民主文明和谐.........

摩斯电码

摩尔斯电码(Morse alphabet)(又译为摩斯电码)是一种时通时断的信号代码,这种信号代码通过不同的排列顺序来表达不同的英文字母、数字和标点符号等。

维吉尼亚密码

人们在单一恺撒密码的基础上扩展出多表密码,称为"维吉尼亚"密码。该方法最早记录在吉奥万·巴蒂斯塔·贝拉索( Giovan Battista Bellaso)于1553年所著的书《吉奥万·巴蒂斯塔·贝拉索先生的密码》(意大利语:La cifra del. Sig. Giovan Battista Bellaso)中。

举百度百科下面的例子如下:

明码表 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

密码表1 Q W E R T Y U I O P A S D F G H K J L Z X C V B N M

密码表2 E K P R J B D N C V O U H T Y W Z X M L A S F I G Q

第一个密码表加密第一个字母,第二个密码表加密第二个字母,第一个密码表又加密第三个字母,不断地重复......那么:

明文 F O R E S T

密文 Y Y J J L L

结语

简单介绍了几个CTF比赛中常见的编码考点,当然远远不止这一些,有兴趣的小伙伴可以自己去找找。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小饭er

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值