23、猫片(安恒)

本文阅读 3 分钟
首页 代码,C/C#/C++ 正文

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

img

0x02、WP

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

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

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

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

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

img 反编译的结果如下:

#!/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环境

2、十六进制编辑器:winhex

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

本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/qq_45555226/article/details/104043491
-- 展开阅读全文 --
KillDefender 的 Beacon 对象文件 PoC 实现
« 上一篇 02-09
Web安全—逻辑越权漏洞(BAC)
下一篇 » 03-13

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复