您现在的位置是:首页 > 正文

BugKu MISC 就五层你能解开吗?

2024-04-01 00:11:47阅读 4


前言

题目名称:就五层你能解开吗

题目来源:BugKu


1.CRC32

在这里插入图片描述

  1. 打开题目的压缩包发现需要密码,但是可以发现pwd1.txt ~ pwd3.txt,都是6字节,再加上里面的CRC32,让人很容易想到CRC32攻击手段。

  2. 我也有开源项目zip-crc-tools,但是是攻击zip文件的,由于这个是7z的文件,目前没有时间加入这个格式的文件,所以我们使用theonlypwner/crc32,进行爆破明文,需要注意是的由于这个项目的默认爆破字符集里面没有一些特殊符号,所以我们必须要修改一下这个项目crc32.py的代码。

修改crc32.py的字符集:

在这里插入图片描述

  1. 开始攻击,肉眼可以看出这个是比较有意义的字符串

在这里插入图片描述

  1. 剩下的pwd2和pwd3的文本文件,使用上面的手段,就可以拿到明文了,然后组合在一起就是这个7z的密码了:_CRC32_i5_n0t_s4f3

2.维吉尼亚

在这里插入图片描述

  1. 根据tips.txt的提示,我们知道了,我们需要解密这个维吉尼亚密文。

在这里插入图片描述
在这里插入图片描述

  1. 密文在cipher.txt,keys.txt里面有1000个密码,这种重复的事情,肯定是上代码喽

  2. 由于前几天,出了一个换26x26表的题目,所以我直接用我封装好的维吉尼亚脚本。

    因为这个题目喊我们找密码,密码的英文password,但是维吉尼亚加解密的时候,会小写转换为大写,所以我们就爆破keys.txt里面的所有key,使用PASSWORD作为关键字就好了。

    from src import Vigenere # 使用的我是封装好了维吉尼亚加解密过程
    
    
    with open("ciphertext.txt", "r") as f:
        cipher_text = f.read()
    
    with open("keys.txt", "r") as f:
        keys = f.read()
        keys = keys.splitlines()
    
    for key in keys:
        if "PASSWORD" in (plan_text := Vigenere.Vigenere(key).decipher(cipher_text)):
            print(plan_text)
            break
    
    运行结果:
    THE VIGENERE CIPHER IS A METHOD OF ENCRYPTING ALPHABETIC TEXT BY USING A SERIES OF DIFFERENT CAESAR CIPHERS BASED ON THE LETTERS OF A KEYWORD IT IS A SIMPLE FORM OF POLYALPHABETIC SUBSTITUTION SO PASSWORD IS VIGENERE CIPHER FUNNY
    

    得到密码:VIGENERE CIPHER FUNNY,大写试过,没成功,所以我们使用小写vigenere cipher funny,成功解压出来了。


3.爆破SHA1

在这里插入图片描述

上代码即可:

# 不完整密码: *7*5-*4*3?
# 不完整sha-1: 619c20c*a4de755*9be9a8b*b7cbfa5*e8b4365*

import string
import hashlib
import itertools


# 1.先定义几个字符集到时候使用
str_digits = string.digits
str_upper = string.ascii_uppercase
str_lower = string.ascii_lowercase
str_printable = string.printable

password = "%s7%s5-%s4%s3?"
for chrs in itertools.product(str_printable, repeat=4):
    pwd = password % chrs
    if (hash_str := hashlib.sha1(pwd.encode()).hexdigest()).startswith("619c20c"):
        print(pwd, hash_str)
运行结果:
s7v5-T4`3? 619c20c33dbeff190fab0d5498f0789e3ec1519a
I7~5-s4F3? 619c20c4a4de75519be9a8b7b7cbfa54e8b4365b

根据运行结果,我们成功拿到了解压密码I7~5-s4F3?,爆破速度也不慢,我就上个厕所回来就出来了。

4.MD5

在这里插入图片描述

关于MD5校验,这个地方我之前看过关于MD5的视频:哔哩哔哩-MD5为何不再安全, 视频的11:55

在这里插入图片描述

使用选择前缀碰撞攻击,已经实现了一样的MD5,出输出了不一样的内容。感兴趣,可以看一下这个视频。

所以这一层的密码是:Goodbye World :-(


5.RSA

在这里插入图片描述

这一层,flag.enc我看了一下没有base64加密,我们写代码来解吧,这样以后碰到base64的也能变通。

import sympy
import libnum
from Crypto.PublicKey import RSA


# 1.read flag.enc
with open("flag.enc", "rb") as f:
    flag = f.read()
    c = libnum.s2n(flag)

# 2.read pub_key
with open("rsa_public_key.pem") as f:
    pub_key = RSA.import_key(f.read())

n = pub_key.n
e = pub_key.e

# 3.使用factordb查询的
p = 15991846970993213322072626901560749932686325766403404864023341810735319249066370916090640926219079368845510444031400322229147771682961132420481897362843199
q = 28805791771260259486856902729020438686670354441296247148207862836064657849735343618207098163901787287368569768472521344635567334299356760080507454640207003

phi_n = (p - 1) * (q - 1)
d = sympy.mod_inverse(e, phi_n)

m = pow(c, d, n)
print(libnum.n2s(m))
运行结果:
b'\x02\xb3\xf3\xc6W8\xb5\x81S/cwr\xe8\xd3\xb5Cf\xe4\xe5w\x81h\t\x82\x8cd\x85D}\xec7\xec!\xe4;\x89\xb3w\xa4Uf\xf5\xd9%\xcb\x96\x85\x10\x11B\x9a<"QS\x05\x84\x80{\xb1.\x82\xcc\x1c\xf6\x87z@\x91\x9e\xf6h\xe7\xa1\x8f\x96\x9d%&\xa4\xcd\xf0\'\x16J\xf4!\x9c\'h8!Y\xa1o(H\xea}\x00flag{W0rld_Of_Crypt0gr@phy}'

成功拿到FLAG:flag{W0rld_Of_Crypt0gr@phy}

网站文章

  • 【CV作业03】图像平滑+锐化处理

    【CV作业03】图像平滑+锐化处理

    【代码】【CV作业03】图像平滑+锐化处理。

    2024-04-01 00:11:43
  • 使用Apache服务器部署python web过程中遇到的问题及解决方法

    使用Apache服务器部署python web过程中遇到的问题及解决方法

    1. 浏览器提示Internal Server Error 分析:查看Apache错误日志。日志提示:IndentationError: expected an indented block\r,即程...

    2024-04-01 00:11:36
  • 基于 Redis 实现分布式应用限流

    基于 Redis 实现分布式应用限流

    原文链接:http://xiaoqiangge.com/aritcle/1513004492550.html 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务。 前几天在DD的公众号,看了一篇关于使用 瓜娃 实现单应用限流的方案,参考《redis in action》 实现了一个jedis版本的,都属于业务层次限制。 实际场景中

    2024-04-01 00:11:11
  • Spring Boot系列八 spring boot集成jsp、restful接口、springmvc基本功能

    本文介绍spring boot里的spring mvc部分的用法,主要包括如下:- 1 实现 spring boot 集成jsp: @Controller+ @RequestMapping- 2 模拟登录功能: ModelAndView- 3 spring boot 实现restful接口:@RestController

    2024-04-01 00:11:04
  • databinding的简单使用步骤

    1.开启databindingandroid { //在 app 的 build.grandle 中添加开启配置 dataBinding { enabled = true }}2、创建实体public class User { public String name; public User(String name) { this...

    2024-04-01 00:10:57
  • ESP32 Arduino (十) HTTPClient库

    ESP32 Arduino (十) HTTPClient库

    很多时候我们需要ESP32去访问外网的服务器获取一些网络资源,HTTP服务器是最常见的服务器,在这个时候就需要ESP32作为HTTPClient使用,HttpClient是Apache中的一个开源的项...

    2024-04-01 00:10:33
  • 打印机文件服务器主机,打印机服务器主机名称是什么原因

    打印机文件服务器主机,打印机服务器主机名称是什么原因

    打印机服务器主机名称是什么原因 内容精选换一换成为进阶Linux大佬的第一步一、操作系统1、操作系统为接口的示意图2、不同领域的主流操作系统桌面操作系统服务器操作系统嵌入式操作系统移动设备操作系统 3...

    2024-04-01 00:10:20
  • Vue组件化学习之scoped

    Vue组件化学习之scoped

    简介主要介绍scoped的作用。先弄一个案例:main.js://引入vue依赖import Vue from 'vue'//引入组件Appimport App from './App.vue'// ...

    2024-04-01 00:10:14
  • JS判断是否为base64字符串&如何转换为图片src格式

    JS判断是否为base64字符串&如何转换为图片src格式

    JS判断是否为base64字符串&如何转换为图片src格式需求背景 :如何判断后端给返回的 字符串 是否为 base-64 位 呢 ?以及如果判断为是的话,如何给它进行转换为 img 标签可使用的那种 src 格式 呢 ?

    2024-04-01 00:09:44
  • 给我一个java 策略模式和工厂模式一起实用的例子

    策略模式可以用来实现一组可互换的算法,例如在不同环境下使用不同的算法。工厂模式可以用来创建一组相关的对象,例如在一个网站中创建不同类型的用户。一个实用的例子就是使用策略模式和工厂模式来创建一个网站,该网站根据不同的环境使用不同的算法来创建不同类型的用户。 ...

    2024-04-01 00:09:39