BUUCTF 每日打卡 2021-4-6

引言

假期如期结束了
作业在 deadline 之前写完了,却不知道为什么感觉很疲倦
这大概就是所谓的“假期综合征”吧

异性相吸

在这里插入图片描述
??? 兄弟,你的思想很危险(滑稽)
解压后有两个文件 key.txt 和 密文.txt
在这里插入图片描述
在这里插入图片描述
不知所云
但是根据题目推断,大概要对两条字符串之间进行操作
“异性相吸” 大概指要对两个字符串之间进行异或操作
代码如下:

key = 'asadsasdasdasdasdasdasdasdasdasdqwesqf'
with open(r'D:\BUUCTF\Crypto\异性相吸\b8c1caee-43d6-42ee-aecc-d72502a5ade2\密文.txt', 'r') as f:
    m = f.read()

c = ''
for i in range(len(key)):
    c += chr(ord(m[i]) ^ ord(key[i]))
print(c)

得到 flag{ea1bc0988992276b7f95b54a7435e89e}

还原大师

在这里插入图片描述
题目中三处未知处均为大写字母,而且已知 MD5 加密后的部分密文
根据哈希函数的基本特征:原始输入有微小改动,哈希值的变化也会很大
我们只需用三个循环爆破结果,与 MD5 码对应即可,且不用担心 MD5 码缺失的影响
而且我们只改动三个字母,也不用担心哈希碰撞
代码如下:

import hashlib

for i in range(26):
    for j in range(26):
        for k in range(26):
            test = 'TASC' + chr(ord('A') + i) + 'O3RJMV' + chr(ord('A') + j) + 'WDJKX' + chr(ord('A') + k) + 'ZM'
            s = hashlib.md5(test.encode('utf8')).hexdigest().upper()
            if s[0:4] == 'E903':
                print(s)

结果唯一: E9032994DABAC08080091151380478A2

RSAROLL

题目给了花括号里面两个数字和后面一长串数字
花括号里面的应该分别是 n 和 e ,而后面一串应该就是密文
根据题目 “RSAROLL” ,推测是将 flag 拆分之后加密
先分解 n:在这里插入图片描述
得到 p, q
再按照 RSA 加密的一般算法进行解密即可
代码如下:

from Crypto.Util.number import *

n = 920139713
p = 18443
q = 49891
e = 19

with open('data.txt', 'r') as f:
    list_c = f.readlines()[2:]

phi = (p-1)*(q-1)
d = inverse(e, phi)
flag = ''
for c in list_c:
    c = c.replace('\n', '')
    m = pow(int(c), d, n)
    flag += str(long_to_bytes(m)).replace('\'', '').replace('b', '')
print(flag)

实际上解出来每个 m 值就是对应的 ascii 码了,这里用 long_to_bytes 实际上是杀鸡用牛刀了
不过为了保险起见(比如会有 flag 不是逐位加密的情况,而是拆分成一段一段的情况),还是建议 long_to_bytes ,也不费事

结语

希望能坚持(打哈欠)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值