CTF-Streamgame1-writeup
2021/7/16 23:35:34
本文主要是介绍CTF-Streamgame1-writeup,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Streamgame1
题目信息:
附件:
streamgame1.py
from flag import flag assert flag.startswith("flag{") # 作用:判断字符串是否以指定字符或子字符串开头flag{ assert flag.endswith("}") # 作用:判断字符串是否以指定字符或子字符串结尾},flag{},6个字节 assert len(flag)==25 # flag的长度为25字节,25-6=19个字节 #3<<2可以这么算,bin(3)=0b11向左移动2位变成1100,0b1100=12(十进制) def lfsr(R,mask): output = (R << 1) & 0xffffff #将R向左移动1位,bin(0xffffff)='0b111111111111111111111111'=0xffffff的二进制补码 i=(R&mask)&0xffffff #按位与运算符&:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 lastbit=0 while i!=0: lastbit^=(i&1) #按位异或运算符:当两对应的二进位相异时,结果为1 i=i>>1 output^=lastbit return (output,lastbit) R=int(flag[5:-1],2) mask = 0b1010011000100011100 f=open("key","ab") #以二进制追加模式打开 for i in range(12): tmp=0 for j in range(8): (R,out)=lfsr(R,mask) tmp=(tmp << 1)^out #按位异或运算符:当两对应的二进位相异时,结果为1 f.write(chr(tmp)) #chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。 f.close()
key
解题思路:
1.观察py文件,可知flag的长度为25格式为flag{xxxx}其中xxxx为19位的二进制串
2.观察py文件,可知key文件是该脚本的输出,脚本中每轮循环输出1个字节,共输出12字节的数据
3.由于xxxx只有19位,考虑直接爆破
附件:
def lfsr(R,mask): output = (R << 1) & 0xffffff i=(R&mask)&0xffffff lastbit=0 while i!=0: lastbit^=(i&1) i=i>>1 output^=lastbit return (output,lastbit) with open("key","rb") as f: filek = f.read(12) res = bytes() for a in range(2**19): R=a mask=0b1010011000100011100 for i in range(12): tmp=0 for j in range(8): (R,out)=lfsr(R,mask) tmp=(tmp << 1)^out res += tmp.to_bytes(length=1,byteorder='big',signed=False) print(a,res,filek) if res == filek: break else: res = bytes()
FLAG
flag{1110101100001101011}
作者:damedane-qiuqiu
这篇关于CTF-Streamgame1-writeup的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-02在 Objective-C 中strong 和 retain有什么区别-icode9专业技术文章分享
- 2024-11-02NSString 中的 hasPrefix 有什么作用-icode9专业技术文章分享
- 2024-11-02在 C 和 Objective-C 中inline的用法是什么-icode9专业技术文章分享
- 2024-11-02文件掩码什么意思?-icode9专业技术文章分享
- 2024-11-02在 Git 提交之前运行 composer cs-fix 命令怎么实现-icode9专业技术文章分享
- 2024-11-02为 Composer 的 cs-fix 命令指定一个目录怎么实现-icode9专业技术文章分享
- 2024-11-02微信公众号开发中怎么获取用户的 unionid-icode9专业技术文章分享
- 2024-11-01lip-sync公司指南:一文读懂主要玩家和技术
- 2024-11-01Anthropic的新RAG方法——提升大型语言模型在特定领域的表现
- 2024-11-01UniApp 中组件的生命周期是多少-icode9专业技术文章分享