[UTCTF2020]OTP

文章讲述了如何通过解码和识别ONETIMEPAD加密方法来解决一个关于encrypted.txt文件的密码挑战,关键在于找到AXORA的正确解码结果作为flag。解码过程涉及OriginalA和B的内容,以及关键的加密key。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.题目

2.分析

3.解题

4.参考


1.题目

题目给了一个encrypted.txt文件,内容如下:

Encoded A: 213c234c2322282057730b32492e720b35732b2124553d354c22352224237f1826283d7b0651
Encoded B: 3b3b463829225b3632630b542623767f39674431343b353435412223243b7f162028397a103e

Original A: 5448452042455354204354462043415445474f52592049532043525950544f47524150485921
Original B: 4e4f205448452042455354204f4e452049532042494e415259204558504c4f49544154494f4e

A XOR A: 7574666c61677b7477305f74696d335f703464737d7574666c61677b7477305f74696d335f70
B XOR B: 7574666c61677b7477305f74696d335f703464737d7574666c61677b7477305f74696d335f70

2.分析

注意到题目中为OTP,网络上搜索OTP知道代表ONE TIME PAD问题,即是一次性加密的问题,在这种问题中使用key对密文进行一次二进制的异或进行加密,要求key和原文的16进制长度一致,在文本中我们可以先将Original A和B进行16进制解码,然后就看能否得到一些提示信息,但是最终flag是A XOR A的结果,看来是出题人把flag拼接成了key来进行加密了,这么看来这道题目并不难。

3.解题

对Original A、B进行解码:
 

a = '5448452042455354204354462043415445474f52592049532043525950544f47524150485921'
b = '4e4f205448452042455354204f4e452049532042494e415259204558504c4f49544154494f4e'
for i in range(0, len(a), 2):
    print(chr(int(a[i:i+2], 16)), end = '')
    
for i in range(0, len(b), 2):
    print(chr(int(b[i:i+2], 16)), end = '')

#THE BEST CTF CATEGORY IS CRYPTOGRAPHY!NO THE BEST ONE IS BINARY EXPLOITATION

再对key进行16进制解码:

c = '7574666c61677b7477305f74696d335f703464737d7574666c61677b7477305f74696d335f70'

for i in range(0, len(c), 2):
    print(chr(int(c[i:i+2], 16)), end = '')

#utflag{tw0_tim3_p4ds}utflag{tw0_tim3_p

得到的flag即为:

utflag{tw0_tim3_p4ds}

4.参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值