[2020 羊城杯杂项]

逃离的东南亚

打开第一个压缩包 发现里面的日记.md不能加载img.png 猜测图片被修改了宽或高

image

png宽高crc详解

直接上脚本爆破

#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))

image

用16进制编辑器修改img.png的高为012C(300)

image

获得第二个压缩包密码

解压第二个压缩包 记事本打开test 发现是Brainfuck语言

Brainfuck加解密

image

随便加密一串字符发现第一行都有8个+

image

而test里的没加++++++++导致不能正确解密

image

在最前面加上++++++++成功解密

image

观察解密后字符的特点猜测一应该是base64编码过后的

直接上脚本梭哈

#python3
import base64
a=""#base64值
f=open("a.txt","wb")
f.write(base64.b64decode(a))
f.close()

打开解密后的文件 发现前面有ELF 应该是linux下的可执行文件

image

用ida64打开 f5反编译main函数

image

shift+f12查看字符串

image

双击is there anything? 发现后面有很多16进制数

image

选中然后按a转成字符

image

得到提示打架.wav存在lsb隐写

使用silenteye解码得到第三个压缩包的密码

image

打开第三个压缩包发现一个没卵用的md和一大堆C语言代码

这些代码的修改时间都一样

没啥头绪看了下wp 有部分文件的}后面有空格和制表符

使用linux的命令find -type f | xargs grep '} ' -l把这些文件提取出来

image

}后面的空格和制表符的和为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")

image

posted @ 2021-10-17 20:54  地狱✟祈祷  阅读(168)  评论(0编辑  收藏  举报