[2020 羊城杯杂项]
逃离的东南亚
打开第一个压缩包 发现里面的日记.md不能加载img.png 猜测图片被修改了宽或高
直接上脚本爆破
#python3
import binascii
import struct
crcbp = open("img.png", "rb").read() #打开图片
crcdata=struct.unpack(">I",crcbp[29:33])[0]
for i in range(2000):#宽
for j in range(2000):#高
data = crcbp[12:16] + \
struct.pack('>i', i)+struct.pack('>i', j)+crcbp[24:29]
crc32 = binascii.crc32(data) & 0xffffffff
if(crc32 == crcdata): #图片当前CRC
print(i, j)
print('hex:', hex(i), hex(j))
用16进制编辑器修改img.png的高为012C(300)
获得第二个压缩包密码
解压第二个压缩包 记事本打开test 发现是Brainfuck语言
随便加密一串字符发现第一行都有8个+
而test里的没加++++++++导致不能正确解密
在最前面加上++++++++成功解密
观察解密后字符的特点猜测一应该是base64编码过后的
直接上脚本梭哈
#python3
import base64
a=""#base64值
f=open("a.txt","wb")
f.write(base64.b64decode(a))
f.close()
打开解密后的文件 发现前面有ELF 应该是linux下的可执行文件
用ida64打开 f5反编译main函数
shift+f12查看字符串
双击is there anything?
发现后面有很多16进制数
选中然后按a转成字符
得到提示打架.wav
存在lsb隐写
使用silenteye
解码得到第三个压缩包的密码
打开第三个压缩包发现一个没卵用的md和一大堆C语言代码
这些代码的修改时间都一样
没啥头绪看了下wp 有部分文件的}后面有空格和制表符
使用linux的命令find -type f | xargs grep '} ' -l
把这些文件提取出来
}后面的空格和制表符的和为8 猜测是用空格和制表符表示一个2进制数
然后上脚本梭哈出flag
#python3
import re
def decode(name):
f=open(name,"r",encoding="utf-8")
text=f.read()
data=re.findall("}([ ,\t]{8})\n",text,re.S)
for i in data:
temp=i.replace(" ","0").replace("\t","1")
print(chr(int(temp,2)),end="")
print("")
path="C:/Users/root/Desktop/attachment/日记3/source_code/"
decode(path+"elf/rtld.c")
decode(path+"malloc/malloc.c")
decode(path+"malloc/arena.c")