23、猫片(安恒)

强颜欢笑 提交于 2020-01-20 00:23:09

0x01、题目:猫片(安恒)

在这里插入图片描述

0x02、WP

1、右键链接,点击新建标签页打开链接,保存该附件
在这里插入图片描述
2、注意题目的提示,这是关键点:hint:LSB BGR NTFS
注意:LSB是最低有效位,BGR是blue、green、red三种基色,NTFS是一种文件流格式

3、既然不知道这个是什么,我们拉进010edit,确认是不是png图片,png文件头为8059 4E47
修改格式为png.png,如下图所示
在这里插入图片描述
4、又开始了图片的隐写套路
①、打开图片,发现大小和颜色没什么特殊,但是由于提示,提到了最低有效位和基色
于是:
我们使用图片隐写神器,Stegsolve打开该图片,并且进入data txtract模块

在这里插入图片描述
勾选LSB First、BGR、还有三个0,再点击preview预览,发现有PNG图片,但是它的文件头多出了fffe这个,我们需要修改
在这里插入图片描述
save bin保存该文件为1.png ,再放入winhex,修改其文件头,得到了半张二维码图片:
在这里插入图片描述
我们修改宽和高得到:
在这里插入图片描述
扫描该二维码得一个网盘地址:https://pan.baidu.com/s/1pLT2J4f

②、这个网盘里面存了一个压缩包,我们解压后得到
在这里插入图片描述
③、再次想到题目的提示有:LSB、BGR、NTFS,现在我们已经用到了前两个,还没用到NTFS

我们想到了NTFS隐写,可以通过ntfsstreamseditor.exe软件来扫描,如下图所示,我们扫描到了一个python文件,但是该文件已经被编译过了,我们需要反编译一下即可
在这里插入图片描述
python文件的反编译在线网站:https://tool.lu/pyc/

在这里插入图片描述
反编译的结果如下:

#!/usr/bin/env python
# encoding: utf-8
# 如果觉得不错,可以推荐给你的朋友!http://tool.lu/pyc
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']
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 = [
    '96',
    '65',
    '93',
    '123',
    '91',
    '97',
    '22',
    '93',
    '70',
    '102',
    '94',
    '132',
    '46',
    '112',
    '64',
    '97',
    '88',
    '80',
    '82',
    '137',
    '90',
    '109',
    '99',
    '112']
    ciphertext.reverse()
    flag = ''
    for i in range(len(ciphertext)):
        if i % 2 == 0:
            s = int(ciphertext[i]) - 10
        else:
            s = int(ciphertext[i]) + 10
        s=chr(i^s)
        flag += s
    return flag
 
def main():
    flag = decode()
    print(flag)
 
if __name__ == '__main__':
    main()
————————————————
版权声明:本文为CSDN博主「灬彬」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/x947955250/article/details/81482471

执行该脚本后得:flag{Y@e_Cl3veR_C1Ever!}

0x03、Flag

flag{Y@e_Cl3veR_C1Ever!}

0x04、相关工具

1、隐写神器:Stegsolve
//注意,需要Java环境

百度网盘链接 提取码
https://pan.baidu.com/s/1Yvpy2mZIL5a7M3lqq_V3fw 4juq

2、十六进制编辑器:winhex

百度网盘链接 提取码
https://pan.baidu.com/s/1uVTs_AyjAddpWpBNTASD5w ps3l

3、NTFS隐写扫描工具:ntfsstreamseditor.exe

百度网盘链接 提取码
https://pan.baidu.com/s/1AYNxjDBfwRFCVEPyv7C0Kw e21t
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!