攻防世界 Crypto高手进阶区 6分题 beginners

编程入门 行业动态 更新时间:2024-10-25 06:22:35

攻防世界 Crypto高手<a href=https://www.elefans.com/category/jswz/34/1769503.html style=进阶区 6分题 beginners"/>

攻防世界 Crypto高手进阶区 6分题 beginners

前言

继续ctf的旅程
攻防世界Crypto高手进阶区的6分题
本篇是beginners-luck的writeup

发现攻防世界的题目分数是动态的
就仅以做题时的分数为准了

解题过程

得到一张图片和一段python

#!/usr/bin/env pythondef supa_encryption(s1, s2):res = [chr(0)]*24for i in range(len(res)):q = ord(s1[i])d = ord(s2[i])k = q ^ dres[i] = chr(k)res = ''.join(res)return resdef add_pad(msg):L = 24 - len(msg)%24msg += chr(L)*Lreturn msgwith open('fullhd.png','rb') as f:data = f.read()data = add_pad(data)with open('key.txt') as f:key = f.read()enc_data = ''
for i in range(0, len(data), 24):enc = supa_encryption(data[i:i+24], key)enc_data += encwith open('BITSCTFfullhd.png', 'wb') as f:f.write(enc_data)

用一个长度为 24 的 key 循环异或fullhd.png的字节流
进行加密得到BITSCTFfullhd.png

那就是要想办法得到key

考虑png的文件头

  • 89 50 4e 47 0d 0a 1a 0a 是固定文件头
  • 接下来是关键数据块:00 00 00 0d 表示数据块长度为13 ,这个不会变;49 48 44 52 是 IHDR 标识,这个也是死的;接下来 8 位,前 4 位是宽,后 4 位是高;最后 5 位中,第一位是色深,第二位是颜色类型,接下来一般都是三个 00
  • 在关键数据块后还有 4 位 CRC 校验码

可以看到,前 24 位中只有宽和高的 8 位不是死的
又长宽可以根据图片信息得到1920x1080
那就可以得到key了

脚本

plain ="89504E470D0A1A0A0000000D494844520000078000000438".decode("hex")enc = "FB3B26625C5A2E6D3026336A7D7E04662A2561A8554E2764".decode("hex")def supa_encryption(s1, s2):res = [chr(0)]*24for i in range(len(res)):q = ord(s1[i])d = ord(s2[i])k = q ^ dres[i] = chr(k)res = ''.join(res)return resdef add_pad(msg):L = 24 - len(msg)%24msg += chr(L)*Lreturn msgkey = supa_encryption(plain, enc)with open('BITSCTFfullhd.png','rb') as f:data = f.read()data = add_pad(data)dec_data = ''
for i in range(0, len(data), 24):dec = supa_encryption(data[i:i+24], key)dec_data += decwith open('fullhd.png', 'wb') as f:f.write(dec_data)

得到图片


得到flag

结语

关键是png的文件头

更多推荐

攻防世界 Crypto高手进阶区 6分题 beginners

本文发布于:2024-03-10 04:41:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1727036.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:进阶   攻防   高手   世界   Crypto

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!