首页 > 其他分享 >【CTF入门】BUUCTF Crypto刷题(持续更新)

【CTF入门】BUUCTF Crypto刷题(持续更新)

时间:2024-07-16 15:31:35浏览次数:9  
标签:BUUCTF 加密 chr flag Crypto 解密 CTF 字符串 MD5

【CTF入门】BUUCTF Crypto刷题(持续更新)

一眼就解密

题目介绍如图:

image-20240716091029138

我们可以发现加密的字符串由base64编码,因此base64解码后即可解密。什么是base64编码,又应该如何解码呢?

base64编码介绍

原理:https://www.bilibili.com/video/BV1hk4y1S7PJ?vd_source=69c558b0c7be97607c79afbd75bd1f7c

密文特征:

乱码尾部通常有一两个等号。

回到题目,base64解码并不是很难的事,在网上搜索base64解码都能搜索出很多在线工具可以进行解码:

image-20240716093948424

个人常用解码工具网址为:CyberChef,它还有离线版本,是非常强大的集合解密工具。

使用工具base64解码后即可获得flag

image-20240716094335905

考点:base64解码

MD5

下载文件,打开发现加密字符串:

image-20240716092340704

根据题目名我们可以知道字符串经历了MD5算法加密,那么我们应该怎么解密呢?

HASH算法介绍

MD5系列算法是HASH算法的一种,在此我们介绍下什么是HASH算法。

原理:https://www.bilibili.com/video/BV1SZ4y1z7wT?vd_source=69c558b0c7be97607c79afbd75bd1f7c

密文特征:

都是固定长度,常见经历过MD5算法加密的密文为32位字符串。

回到题目,通过学习我们知道HASH算法是不可逆向运算的,但如果明文是非常简单的字符串我们还是可以基于暴力破解和彩虹表来进行解密的。(MD5解密本质上是加速了杂凑冲撞,即找到产生相同MD5串的原文的方法,而不是真正的解密)

在此推荐一些MD5解密在线网站:md5在线解密破解,md5解密加密 (cmd5.com)

Decrypt MD5, SHA1, MySQL, NTLM, SHA256, MD5 Email, SHA256 Email, SHA512, Wordpress, Bcrypt hashes for free online

CrackStation - Online Password Hash Cracking - MD5, SHA1, Linux, Rainbow Tables, etc.

还有一些破解MD5的工具:hashcat、John the Ripper在此不过多介绍

我们在在线网站上进行解密,得到了flag内容:

image-20240716101233250

按照题目说明,包上flag{}提交

考点:MD5系列算法解密

Url编码

下载文件,打开发现加密字符串:

image-20240716102047338

我们可以发现加密的字符串由url编码,因此url解码后即可解密。什么是url编码?

Url编码介绍

URL 编码是将 URL 中不可打印的字符或具有特殊含义的字符转换为 Web 浏览器和服务器普遍接受的字符的过程。例如! -> %21;# -> %23等。

密文特征:

都是由 "%"和十六进制数字组成。

回到题目,使用解码工具即可解密:

image-20240716102755611

考点:理解url编码

看我回旋踢

下载文件,打开发现加密字符串:

image-20240716102926008

根据密文特征与题目提示(回旋踢),我们可以确定加密方式为ROT13加密(回转13位)

ROT13加密介绍

是一种简易的替换式密码算法,也是过去在古罗马开发的凯撒密码的一种变体。

原理:ROT13 - Wikipedia

密文特征:

纯乱码,但flag的格式不会改变。个人认为得靠提示与运气。

回到题目,使用解码工具即可解密:

image-20240716104944721

考点:理解ROT13加密

摩丝

下载文件,打开发现加密字符串:

image-20240716104413442

鉴定为大名鼎鼎的摩斯电码,可以直接上工具

摩斯电码介绍

原理:摩尔斯电码_百度百科 (baidu.com)

密文特征:

只有两种格式的字符串。

回到题目,使用解码工具即可解密:

image-20240716105011440

考点:知道摩斯电码加密

password

下载文件,打开发现这些:

image-20240716110149819

一看让人摸不着头脑,让我们发散思维,根据题目名(password)这是让我们猜测张三的密码。这涉及到社会工程学攻击。

社会工程学

原理:https://www.bilibili.com/video/BV15V411u7Za?vd_source=69c558b0c7be97607c79afbd75bd1f7c

根据题目内容,我们已经得到了张三的生日信息以及密码为十位数。这是一道CTF题目,根据已有信息我们可以进行排列组合猜测密码:zs19900315、Zs19900315、zS19900315、ZS19900315、19900315zs……

包上flag{}提交,猜测正确

考点:发散思维想到社工打击

变异凯撒

下载文件,打开发现这些:

image-20240716111208085

根据题目我们可以知道这是与凯撒密码相关的,也就是与位移密码相关。

密文中含有特殊字符,因此以ascii表对密文与明文进行对照,根据格式我们可以知道”flag“经过加密后的密文为“afZ_”

CS50. Си. ASCII

f——102,a——97 相差5
l——108,f——102 相差6
a——97,Z——90 相差7
g——103,_——95 相差8

按照这个规律,我们可以依次计算下去,或者是自己编写python脚本来进行解密:

ciphertext = 'afZ_r9VYfScOeO_UL^RWUc'
j = 5
for i in ciphertext:
    print(chr(ord(i) + j), end='') #凯撒密码从5开始递增
    j += 1

ord():返回一个字符的ASCII值

image-20240716112714241

最终运算出flag

考点:寻找出移位密码的规律

Quoted-printable

下载文件,打开发现加密字符串:image-20240716113019471

鉴定为Quoted-printable编码,可以直接上工具

Quoted-printable编码介绍

原理:

Q:试将数据 01001100 10011101 00111001进行quoted-printable编码,并得出最后传送的ASCII编码。
A:
在这里插入图片描述

(来源:MIME之quoted-printable编码与base64编码(例题+图解)-CSDN博客

密文特征:

以一个“=”和两位十六进制数字堆积组成字符串。

回到题目,由cyberchef工具可以得到:

image-20240716114359872

怎么乱码了?别急,cyberchef的输出编码出了问题,这道题目的flag很有可能不是英文字符

image-20240716114553661

我们在output底下那一栏更改输出字符编码方式,改为utf-8即可

image-20240716114702851

包上flag{},提交成功

补充:UTF-8编码

原理:https://www.bilibili.com/video/BV1kD4y1z7ft?vd_source=69c558b0c7be97607c79afbd75bd1f7c

篱笆墙的影子

下载文件,打开发现加密字符串:

image-20240716115517350

根据题目名字,这很有可能是栅栏(篱笆:fence)密码

栅栏密码介绍

原理:https://www.bilibili.com/video/BV1TE41177qP?vd_source=69c558b0c7be97607c79afbd75bd1f7c

密码特征:

flag{}格式的“{}”不在它应该在的位置。

我们进行分析,发现flag{的位置:

image-20240716120747593

可以推断出栅栏栏数为2,如果实在不想推直接把所有栏数都爆破一遍也行

用栅栏密码加密后发现了flag:

image-20240716121002120

Rabbit

下载文件,打开发现加密字符串:

image-20240716133214604

根据题目名,我们能知道字符串进行了rabbit加密。

Rabbit加密介绍

Rabbit 是一种高速流密码,于 2003 年在 FSE 研讨会上首次提出。 Rabbit 使用一个 128 位密钥和一个 64 位初始化向量。 该加密算法的核心组件是一个位流生成器,该流生成器每次迭代都会加密 128 个消息位。(来源:【BUUCTF】Crypto题解_buuctf crypto答案-CSDN博客

在这里插入图片描述

用解密工具进行解密:

image-20240716134058292

cyberchef可能只能使用需要秘钥的rabbit加密,所以在此使用了其他在线网站解出了flag

RSA

下载文件,打开发现这些:

image-20240716143644447

这更类似于一道数学题,在此之前我们先学习一下RSA的算法步骤

RSA加密介绍

原理:https://www.bilibili.com/video/BV1XP4y1A7Ui?vd_source=69c558b0c7be97607c79afbd75bd1f7c

image-20240716145126581

image-20240716145145842

image-20240716145205186

image-20240716145225559

知道了RSA的算法后我们便能够计算d的值了,直接编写脚本:

p = 473398607161
q = 4511491
e = 17
n = p*q
phi = (p-1)*(q-1)
d = pow(e,-1,phi)
print(d)

pow():返回e的-1次方,并对结果与phi进行模运算

运行脚本,我们可以得到d的值:125631357777427553

考点:理解RSA加密原理并运用p、q、e计算出d

丢失的MD5

下载文件,打开发现这些:

image-20240716145529965

我们对脚本进行分析:

import hashlib	#导入hashlib库:这个库提供了多种哈希算法,如MD5、SHA-1等,用于生成数据的哈希值。
for i in range(32,127):
    for j in range(32,127):
        for k in range(32,127):
            m=hashlib.md5()	# 创建一个新的MD5对象
            m.update('TASC'+chr(i)+'O3RJMV'+chr(j)+'WDJKX'+chr(k)+'ZM')	# 嵌套循环生成字符串,并计算字符串的MD5哈希值
            des=m.hexdigest()	#获取哈希值的十六进制表示
            if 'e9032' in des and 'da' in des and '911513' in des:	#检查哈希值是否包含指定的字符串
                print des	#输出哈希值

脚本在计算明文'TASC'+chr(i)+'O3RJMV'+chr(j)+'WDJKX'+chr(k)+'ZM'的MD5哈希值,并只输出含有'e9032'、'da'和'911513'三个字符串的密文,按照一般思路我们应该寻找相应的明文。

很简单,我们修改一下程序就能输出相关明文:

import hashlib	#导入hashlib库:这个库提供了多种哈希算法,如MD5、SHA-1等,用于生成数据的哈希值。
for i in range(32,127):
    for j in range(32,127):
        for k in range(32,127):
            m=hashlib.md5()	# 创建一个新的MD5对象
            m.update('TASC'+chr(i)+'O3RJMV'+chr(j)+'WDJKX'+chr(k)+'ZM')	# 嵌套循环生成字符串,并计算字符串的MD5哈希值
            mingwen='TASC'+chr(i)+'O3RJMV'+chr(j)+'WDJKX'+chr(k)+'ZM'	#记录生成的字符串
            des=m.hexdigest()	#获取哈希值的十六进制表示
            if 'e9032' in des and 'da' in des and '911513' in des:	#检查哈希值是否包含指定的字符串
                print mingwen	#输出符合条件的明文

运行脚本就有了:

image-20240716152009485

但是提交发现是错误的!!!为什么!!!

上网搜了下别人的write up发现原来flag是原来输出的MD5哈希值...也就是说直接运行源程序的输出就是flag

image-20240716152205444

考点:会运行python文件……

标签:BUUCTF,加密,chr,flag,Crypto,解密,CTF,字符串,MD5
From: https://www.cnblogs.com/handsomexuejian/p/18305321

相关文章

  • NSSCTF中24网安培训day2中web题目
    [SWPUCTF2021新生赛]ez_unserialize这道题目考察php反序列化的知识点打开题目,发现没有提示,我们试着用御剑扫描目录文件,发现存在robots.txt的文件接着访问这个文件,发现是一段php反序列化代码,我们需要进行序列化的转换简单的构造exp代码如下,在末尾那里<?phperror_re......
  • 【CTF入门】BUUCTF N1BOOK闯关(持续更新)
    【CTF入门】BUUCTFN1BOOK闯关(持续更新)[第一章web入门]常见的搜集点击启动靶机,为我们生成了一个链接,这就是我们要攻击的地址。点击链接进入,发现这个页面:可以看出这道题目的考点是信息搜集敏感文件,在这里简单介绍下常见的敏感文件(来源于《从0到1CTFer成长之路》)敏感目录泄露......
  • PolarD&N-CTF靶场web通关记录
    新人尝试,还请见谅!!!web简单swp进题先扫dirsearch然后发现了一个叫做/.index.php.swp的备份文件。访问/.index.php.swp这时我们需要post一个名为xdmtql的变量,然后这个变量不能是数组。不能与/sys.nb/is正则匹配。但是结果的sysnb要在第一位。但是结果的sysnb要在第一位。......
  • BUUCTF-ningen1
    1.由于是jpg后缀,所以先打开详细信息看看里面有没有东西(png后缀的不需要)2.发现没有东西后,将其放在010Editor里面,看看里面有没有隐藏的文件在010Editor里面发现了PK(PK文件是一种压缩文件格式),于是将其选择保存(后缀记得写成.zip)。3.将压缩包保存在电脑后打开发现需要密码,......
  • buuctf-FLAG1
    1.下载后发现是一张图片;按照做题思路首先打开010Editor查看里面有没有东西,这个图片中我没发现什么东西,于是将图片放在Stegsolve.jar中查看看图片没啥问题后,进行数据提取(dataextract),进行预览发现了504b0304,也就是说里面藏了一个压缩包,这个时候进行保存打开后只发现了一......
  • [MRCTF2020]Ezaudit 1
    信息收集,伪随机数打开之后发现什么按键都没用,直接扫目录得到了两个网址:www.ziplogin.html<?phpheader('Content-type:text/html;charset=utf-8');error_reporting(0);if(isset($_POST['login'])){$username=$_POST['username'];$password=$_POST[&......
  • [SUCTF 2018]GetShell 1
    自增绕过,文件上传打开是一个白的页面,开始信息收集,可以在前端代码中看到,index.php?act=upload尝试访问之后发现是文件上传发现是直接给了源码的,代码解释:这段PHP代码用于处理一个通过HTML表单上传的文件,并检查该文件的内容是否包含任何黑名单中的字符。下面是逐行解释:if($co......
  • [WUSTCTF2020]level3
    拖入ida,是一个base64串,但是用工具还原不了猜测是密钥变了,此时看到了另一个函数,这个函数改变了base64密钥写个脚本给他运行一下,后面是改完的key和输出结果importbase64a='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'b=list(a)foriinrange......
  • BUUCTF Crypto 做题记录
    目录:1.一眼就解密2.Url编码3.MD54.看我回旋踢5.摩丝6.password#1.一眼就解密https://buuoj.cn/challenges#一眼就解密ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR30=确实一眼看出是Base64,拿去解密即可2.Url编码https://buuoj.cn/challenges#Url编码直接网上搜urlenco......
  • [HNCTF 2022 WEEK2]ez_SSTI
    [HNCTF2022WEEK2]ez_SSTIpayload:?name={{''.__class__.__base__.__subclasses__()[137].__init__.__globals__['__builtins__']['eval']('__import__("os").popen("catflag").read()')}}1.首先输入{{8*8}}判......