状态简写 | 状态 | 状态说明 |
---|---|---|
W | Wait | 没有人做这道题,你可以开始尝试 |
S | Stuck | 题目做到一半思路卡壳 |
F | Finished | 完成该题 |
1 | First Blood | 获得一血 |
2 | Second Blood | 获得二血 |
3 | Third Blood | 获得三血 |
L | Lack WP | 完成并缺少WP |
题目描述:
hint:ENDEND,从10到70。此为最后一步的hint,请务必注意flag的格式。
不好意思,旧附件有点问题, 如果你crc32出来的是_folk_,请改成_folk,去掉最后一个_,新附件不需要去掉_,因附件问题,此题红包金额改为150。
其中CF.zip为旧附件,easypic_new.zip为新附件;新旧附件flag不一样,提交任意一个均为正确。
春节红包题,供大家娱乐,做出该题的同学请带着WP联系群主qq(xxxx),红包题共100元,所有做出来的同学平分。flag格式为N0wayBack{XXXXXXXXX}
解题思路:
CF.zip
得到folktales.jpg
0000
改为504B0304
,得到1.zip
,里面的文件是一个data和4个文本文件1~6
字节兔.txt: inese
,狐.txt: tales_
,豕.txt: _folk_
,鹅.txt: YAO_Ch
根据狐兔豕鹅的顺序拼接一下,就是YAO_Chinese_folk_tales_
_folk_
最后面的_
,也就是YAO_Chinese_folktales_
,成功解压了出来,使用010editor
打开data很明显16进制,使用cyberchef
,这个一眼png的尾部,不过逆序了
逆序我这边是批量脚本,我就懒得贴出来了
010editor
打开就会提示,最后一层crc32有问题,其实这个问题是因为最后一层有字节被修改了关于hint的提示ENDEND,从10到70。
,其实是说最后面最后面,10h~70h,仔细看他们的行前面的序号
N0wayBack{F0x_r4Pig_goOs3~~}
题目描述:
春节红包题,供大家娱乐,做出该题的同学请带着WP联系群主qq(xxxx),红包题共100元,所有做出来的同学平分。flag格式为N0wayBack{XXXXXXXXX}
hint:
1.解出的结果包上N0wayBack提交。
2.游戏一般玩法,两手向上下提为第一步,左右拉为第二步。
3.压缩包中为hint而已,别太纠结,原始png图片即可得到flag
解题思路:
E5S1S8E4S4S5N5W5E2S3W3N4W4S1S2S4E6E8N4N7N6S7N7S1E3S2N6W7E3N4W7S5在png的尾部
E5S1S8E4S4S5N5W5E2S3W3N4W4S1S2S4E6E8N4N7N6S7N7S1E3S2N6W7E3N4W7S5
东 east 南 south 西 west 北 north
东5 南1 南8 东4 南4
南5 北5 西5 东2 南3
西3 北4 西4 南1 南2
南4 东6 东8 北4 北7
北6 南7 北7 南1 东3
南2 北6 西7 东3 北4
西7 南5
C B A D A
B F G D B
G E H B A
A D D E F
E B F B C
A E G C E
G B
# 最终得到
CBADABFGDBGEHBAADDEFEBFBCAEGCEGB
我第一步是把A替换为000,C替换为010,然后其他的全部转binary,然后再去转ascii,没有成功
正确做法是:A --> 000, C --> 010, 所以B大胆点就是 001,所以对应关系就是ABCDEFGH
对应01234567
'''
A 000
C 010
根据A --> 000, C --> 010
所以B --> 001
所以映射关系就是 ABCDEFGH 01234567
'''
cipher_text = "CBADABFGDBGEHBAADDEFEBFBCAEGCEGB"
table = str.maketrans("ABCDEFGH", "01234567")
bin_str= ""
for i in cipher_text.translate(table):
bin_str += bin(int(i))[2:].zfill(3)
# binary to ascii
for i in range(0, len(bin_str), 8):
print(chr(int(bin_str[i:i+8], 2)), end="")
N0wayBack{D0ngN@nXiBe1}
关于这个东南西北,如果很快的就得到结果,我这边写了个脚本,由于这道题目并不多,所以可以自己一个一个试出来(如果遇到BT出题人,就不可能一个一个试了,你需要考虑写个脚本了,这边只做扩展讨论可看可不看)
# 东 east 南 south 西 west 北 north
dic = {
"E": ["C", "D"],
"S": ["B", "A"],
"W": ["G", "H"],
"N": ["F", "E"]
}
cipher_text = "E5S1S8E4S4S5N5W5E2S3W3N4W4S1S2S4E6E8N4N7N6S7N7S1E3S2N6W7E3N4W7S5"
plain_text = ""
for i in range(0, len(cipher_text), 2):
part = cipher_text[i:i+2]
if int(part[-1]) % 2 == 0:
plain_text += dic[part[0]][1]
else:
plain_text += dic[part[0]][0]
print(plain_text)
原理:
因为东南西北,就4个面,每个面也就是2种情况,一共就是8个情况
举个例子,比如说东1,东1=C,东3你会发现也还是C,东2=D,东4也会等于D,以此类推都满足,所以就可以根据这个特点写脚本