Bugku writeup 猫片(安恒)

题目:

题目

解题:

1、首先打开题目附件,得到一个png的二进制文件。用010editor打开,发现头部内容显示为png,因此修改文件后缀,得到一张图片。
头部信息
图片
打开虚拟机跑一下binwalk,没有任何其他收获;打开pngcheck检查一下,也无异常。结果1
结果2
2、在这时,思考hint内容:LSB、BGR,故使用Stegsolve,在Data Extract内勾选LSB、BGR、Red 0、Green 0、Blue 0,发现了preview部分出现了“PNG"信息,因此选择“Save bin”,保存为png文件。
结果3
用010editor将头部信息矫正,将“FFFE”删除并保存,打开修改后的图片,发现是一张二维码,但是此二维码高度需要修改。再次运行010editor,通过变量窗口修改高度。
图片2
图片2_1
得到一张完整的二维码,但是此二维码却需要反色处理,可以使用画板按“shift”+“ctrl”+“i”进行反色之后再扫码,也可以直接使用QR Research直接打开获取内容,得到一个百度网盘链接:
二维码

3、打开网盘后,发现是个flag.rar文件,下载之后打开压缩包,里面有个flag.txt文件。直接打开txt文件,却发现:

flag不在这里哦 你猜猜flag在哪里呢? 找找看吧

尝试解压,也没问题;打开binwalk跑,也没结果。苦想想不出,就直接去看大手子写的WP了,发现这居然是个坑:用winrar解压会提示解压错误(PS:本人一向来只用7-zip,这个坑我fo了)。这时还剩一个hint:NTFS,根据大佬的WP,这是一个NTFS文件流隐写的问题,可以使用ADS或者NtfsStreamEditor。下载NtfsStreamEditor这软件之后win10内打不开,于是又临时搞了个win7虚拟机。打开之后导入flag.txt,发现确实隐含了一个pyc文件,但是开头用的是v1.0版本又导出不出来,于是只能去下v2.0版本,得到以下结果:
editor
4、将得到的pyc文件用uncompyle6反编译之后得到py文件。
pyc
得到的py文件内容如下:

import base64
def encode():
    flag = '*************'
    ciphertext = []
    for i in range(len(flag)):
        s = chr(i ^ ord(flag[i]))
        if i % 2 == 0:
            s = ord(s) + 10
        else:
            s = ord(s) - 10
        ciphertext.append(str(s))

    return ciphertext[::-1]
ciphertext = [
 '96', '65', '93', '123', '91', '97', '22', '93', '70', '102', '94', '132', '46', '112', '64', '97', '88', '80', '82', '137', '90', '109', '99', '112']

这显然是个对称加密,因此写个解密函数:

def decode(ciphertext):
    flag=''
    ciphertext.reverse()
    for i in range(len(ciphertext)):
        if i%2==0:
            s=int(ciphertext[i])-10
        else:
            s=int(ciphertext[i])+10
        flag+=chr(i^s)
    return flag

最终获取得到flag。
flag

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐