菜狗杯Misc你会异或吗wp

题目给出提示,神秘数字0x50
菜狗杯Misc你会异或吗wp_第1张图片
下载附件后是一个打不开的png,用010打开看下内容:
菜狗杯Misc你会异或吗wp_第2张图片
结合异或和0x50的提示,可以发现0xD9^0x50=0x89,0x00^0x50=0x50,0x1E^0x50=0x4E……所以很明显了文件开头应该恢复成89 50 4E 47,接下来借助Python做文件读写的操作就能解题了,先读取每个字符(8bit),然后与0x50异或后写入新的文件:

f=open('misc5.png','rb')
d=f.read() #d就是文件内容,d是bytes类型
with open('wuwuwu.png','wb') as ff:
    for dd in d:
        ff.write(bytes([dd^0x50])) 

然后恢复出来的wuwuwu.png上就能看到flag:
菜狗杯Misc你会异或吗wp_第3张图片
菜狗杯Misc你会异或吗wp_第4张图片
用微信里的图片文字提取可以拿出flag,新发现mac自带的图片预览竟然能直接复制出图片里的flag了,针不戳。
ctfshow{030d0f5073ab4681d30866d1fdf10ab1}

反正是我搞了半天才把修改后的每个字符写入新的文件,因为要求写文件要是bytes的形式,然后比较笨笨,不知道怎么保证得到正确的bytes,最后找了一种很简单的方法,也就是bytes([int类型的数]),这里一定要写成byte()里面还有一层[ ]的形式,否则就不对……
但是这个方法吧,运行之后会出来一大堆的1……可能是代表成功写入了,但是咋能让它不显示这么多1呢???
还是好菜啊QAQ

你可能感兴趣的:(备战CTF中遇到的题目,网络安全,python)