misc
buuctf-easycap
附件是一个wireshark流量分析文件,用wireshark打开全是TCP,那就追踪任意TCP数据流
crypto
bugku-你喜欢下棋吗
下载附件后一个压缩包一个文本文件,文本文件为压缩包的密码看了这个文本再结合题意,应该是一个棋盘密码,用在线工具解密棋盘密码在线加密解密 - 千千秀字
解压后得到了一个文本文件,是flag.txt,打开后发现又是一个密文一种5bit的编码,没听过,搜搜看,了解到了一种加密方法【博多密码】,然后用在线工具解密Baudot Code, Baudot-Murray Code (online tool) | Boxentriq
bugku-小山丘的秘密
解压附件后得到了一个文本文件和一个图片,那个文本文件包含了密文然后图片是一个棋盘(看着像3*3)依据这个棋盘设置矩阵为3*3,然后它的A=0,设置好密钥后进行解密
buuctf-rsarsa
下载附件后打开为文本文件可以知道这一个RSA加密,已知的条件是pqec的值,那么我们需要写rsa的脚本来解出m
re
nssctf-[SWPUCTF 2021 新生赛]fakerandom
下载附件后得到的是一个python代码
import random
flag = 'xxxxxxxxxxxxxxxxxxxx'
random.seed(1)
l = []
for i in range(4):
l.append(random.getrandbits(8))
result=[]
for i in range(len(l)):
random.seed(l[i])
for n in range(5):
result.append(ord(flag[i*5+n])^random.getrandbits(8))
print(result)
# result = [201, 8, 198, 68, 131, 152, 186, 136, 13, 130, 190, 112, 251, 93, 212, 1, 31, 214, 116, 244]
这个代码引入了random库,有个flag(被隐藏了需要解出),然后用random.seed()生成一个随机的数然后命了一个空列表为l,然后循环四次最终使列表l增加了四个随机生成的八位数。又命了一个空列表result,此时的len(l)就是4,那么又循环了四次,其中i值为0,1,2,3,然后又用random.seed(l[i]),其中的种子值也就是seed_value是列表l的第i位,然后得到一个随机数。再循环五次:在result列表里增加一个元素,即flag的第i*5+n位的ascii码与random.getrandbits随机生成的八位数进行异或的结果。然后输出result
for i in range(len(l)): random.seed(l[i]) for n in range(5): result.append(ord(flag[i*5+n])^random.getrandbits(8))代码中的这一段,result的第零位与flag的第零位挂钩(即0*5+0位),
result的第一位与flag的第一位挂钩(即0*5+1位)
result的第二位与flag的第二位挂钩(即0*5+2位)
....
result的第五位与flag的第五位挂钩(即1*5+0位)
result的第六位与flag的第六位挂钩(即1*5+1位)
...
....
由此我们可以推断result与flag是一一挂钩,相互联系的
因此我们再用同样的方法,将flag与result的关系相互换,再根据异或的特性(即A=(A^B)^B)
import random
result = [201, 8, 198, 68, 131, 152, 186, 136, 13, 130, 190, 112,251,93,212,1,31,214,116,244]
flag=[]
random.seed(1) #生成与原相同的随机数
l = []
for i in range(4):
l.append(random.getrandbits(8)) #产生了同一个列表l
print(l)
for i in range(len(l)):
random.seed(l[i])
for r in range(5):
flag.append(chr(result[i*5+r]^random.getrandbits(8)))
print(flag)
web
nssctf-[SWPUCTF 2022 新生赛]ez_ez_php
开启环境看到了一串php代码其中关键一句为第四行,一个变量file的前三位为php(强比较)就输出nice
substr
函数:
substr(string, start, length)
:从字符串中提取子字符串。
string
:要处理的字符串。
start
:子字符串的起始位置(从0开始)。
length
:子字符串的长度。
由于在页面最末端看到了flag.php,也就是说这个包含了一个文件,所以想到php伪协议
所以我们输入?file=php://filter/read=convert.base64-encode/resource=flag.php(如此就满足了强比较的条件) 然后得到了一串的base64,解码告知真正的flag在flag里,不在flag.php里,所以将前面的最后的改为flag,就行