CTF_密码学_常见题目分析思路

竞赛常见编码类型

·单一类:直接将flag值通过工具实现一次转换

·组合类:主要以多种编码形式存在

·异常类:将密文值大小写篡改或增加多余的1~2位字符,然后需要脚本进行遍历猜解

常考密码算法:

·古典密码:凯撒密码、替换密码、移位密码、栅栏密码、简单替换密码、防射密码、培根密码——通过工具或脚本实现

·对称密码:DES、AES、3DES、RC4、A5等

·公钥密码算法:主要以RSA和DSA衍生算法为主

★ASCII码的特点

70 76 65 71 73 83 66 65 66 89

猜想是ASCII的十进制表示

★二进制编码

01100110001100101010001010100010000111111000001010101

密文由0和1组成,使用converter工具进行测试。,单击binary to text转换成明文

★Base64编码

ZmxhZ3tJX0xPVkVfQkFTRTY0fQ==

Base64编码中把符号=放在字符串最后,将字符串长度补齐为4的倍数

base64编码的多次利用——通过解密脚本多次解码(py文件)

import base64

file = open('desc.txt')

#print(file.read().split())

st=file.read().split()

#print st

str = ''

for i in st:

try:

str = base64.b64decode(str)

print(i,str)

except TypeError:

str = base64.b64encode(str)

break;

print(str)

★Base系列编码

Base64解码失败,尝试使用Base32解码成功

全部是数字的密文,属于base16编码的特点

可是考虑使用脚本遍历解码

#!/usr/env python

#coding:utf-8

from base64 import *

s = open('desc.txt','r').read().split()

result={

'16':lambda x:b16decode(x),

'32':lambda x:b32decode(x),

'64':lambda x:b64decode(x)

}

for i_1 in ['16','32','64']:

for i_2 in ['16','32','64']:

for i_3 in ['16','32','64']:

for i_4 in ['16','32','64']:

for i_5 in ['16','32','64']:

for i_6 in ['16','32','64']:

for i_7 in ['16','32','64']:

for i_8 in ['16','32','64']:

for i_9 in ['16','32','64']:

for i_10 in ['16','32','64']:

try:

print result[i_10](result[i_9](result[i_8](result[i_7](result[i_6](result[i_5](result[i_4](result[i_3](result[i_2](result[i_1])))))))))

print i_10,i_9,i_8,i_7,i_6,i_5,i_4,i_3,i_2,i_1

except:

Continue

★URL编码

形式为%加上十六进制数值,很明显是URL编码的风格

工具:小葵转码器

★HTML编码

在HTML编码中不能使用小于号和大于号,因为浏览器会误认为是标签

★Unicode编码

假如题目给出如下文本文件:

\u0066\u006c\u0061\u0067\u0020\u0069......

“u+四位数字”的组合方法——Unicode编码。

该编码用两个字节编码一个字符。

★敲击码

方方格格,不断敲击——通过在键盘上敲每段字符,发现敲出来的字符分别对应不同字母

★摩斯电码

只有“·”和“-”两种字符,可以采用工具解码

★JSFuck-JS编码变异

也称Jother编码,是JavaScript的一种变形编码

特点:有中括号和小括号加上感叹号构成的字符串

所有浏览器内置各种JS引擎,在浏览器控制台中调试输出,将代码通过alert()函数进行弹框解析。

★Quoted-Printable编码

该编码表示“可打印字符引用编码”,是多用途互联网邮件扩展(MIME)的一种实现方式。

原理:任何一个八位的字节值都可以编码为三个字符,一个等号后跟随两个十六进制数字(0~9或A~F)

使用工具解码得到明文。

★BrainFuck编码

该编码是一种极小化的计算机语言,按照“完整图灵机”思想进行设计。

特点:只有八种符号,>、<、+、-、.、,.[、]

通过在线解码网站或工具解码

★Ook编码

特点:全由Ook、.、?、!组成的字符串

解法:先将Ook编码转化为BrainFuck编码,然后解码即可。

★UUencode编码

特点:二进制到文字,将输入文本以每三个字节为单位进行编译,最后剩下的资料少于三个字节,则不够的部分用0补齐。三个字节共有24位,以6位为单位分为4个组,每个组以十进制表示所出现的字节的数值。

数值只会落在0~63之间,然后将每个数加上32,结果刚好落在ASCII码的可打印字符范围,一共64个字符。

★XXencode编码

它较UUencode编码的优点在于其64个字符是常见字符,没有任何特殊字符。

★AAencode编码

特点:将JS代码转换成网络表情,也称颜文字。

解法:将密文放到浏览器的控制带中,直接回车就可解码得到明文

(是否需要加上alert(),书中未提到)

★Base64变异爆破

特点:密文值大小写统一,不论是全大写还是全小写,解码后均有乱码。

#!/usr/bin/ebv python

import base64
import re
from itertools import combinations

s = list('需要解码字符值')

for i in range(len(s)):
    for j in list(combinations([x for x in range(len(s))],i)):
    
        #c = list(combinations([x for x in range(len(s))],i))
        a=list(s)
        #print c
        
        for k in j:
            a[k]= a[k].lower()
            
        r=repr(base64.b64decode(''.join(a)))
        
        if '\\x' not in r:
            print r [1:-1]

★古典密码学

换位加密方式

eg:有大括号、flag字符串,只不过顺序全部打乱

写一个脚本重新调整位置还原密文

未完待续......

文章内容参考清华大学出版的《CTF安全竞赛入门》(启明星辰网络空间安全学院主编)

  • 14
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: “CTF题目及Flag打包下载”是一个提供CTF比赛题目和相应的Flag(答案)的下载服务。在CTF比赛中,参赛者通过解决各种具有挑战性的安全题目来提升其网络安全攻防能力。 这个服务的目的是为了方便CTF比赛的参赛者获取比赛所需的题目和Flag。一般而言,CTF比赛会有多个题目,每个题目都具有不同的主题和难度。参赛者需要通过分析和利用题目中的漏洞、密码学算法等来获取Flag。Flag通常以特定格式的字符串给出,表示对相关题目的正确解答。 CTF题目及Flag打包下载服务一般会提供一个文件包,里面包含了所有比赛题目的相关文件和Flag。这些文件可能是二进制文件、源代码、加密文件、网络流量等。参赛者可以下载这个文件包后,解压并独立研究每个题目,尝试找到Flag。 通过提供CTF题目及Flag打包下载,可以帮助参赛者更便捷地获取比赛所需的题目和答案。参赛者可以在自己的计算机上独立进行攻击与防守的实践,提高他们的技能和经验。这种服务也有助于促进CTF比赛的发展和推广,吸引更多对网络安全感兴趣的人参与进来。 ### 回答2: CTF比赛是一种网络安全竞赛,参与者需要解决各种安全相关的问题来获取特定的“flag”。Flag是一种明确标识符,通常是一串特定的字符或字符串,用于证明成功解决了问题或完成了相应任务。 在CTF比赛中,以题目和flag的形式呈现问题是非常常见的。一般来说,比赛主办方会给出一系列的题目,每个题目都有一个flag作为解决问题的目标。参与者需要通过分析、加密解密、漏洞利用等技术手段来获取flag。 当比赛结束后,主办方会提供一个打包下载的链接,参与者可以通过该链接将所有的题目和相关的flag一次性下载到自己的设备中。这样,参与者就可以在比赛结束后回顾、学习、研究和分享解题的经验和思路。 对于参与者来说,下载题目和flag的打包是非常重要的,因为它可以帮助他们更好地理解并学习到比赛中遇到的各种问题和解决方案。同时,这些题目和flag的打包下载也提供了参赛者继续研究和深入学习网络安全技术的机会。 总之,CTF比赛中的题目及flag的打包下载对于参与者来说是非常有价值的。它们不仅是学习和研究的资料,还可以帮助参赛者提高自己的技术水平和安全意识。因此,比赛主办方提供题目和flag的打包下载是为了方便参与者继续学习和进一步探索网络安全领域。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值