工控CTF_纵横网络靶场_奇怪的文件

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 工控CTF_纵横网络靶场_奇怪的文件

题目地址

https://game.fengtaisec.com/#/startQuestions/11


640.png

题目描述

在上位机中发现奇怪的文件,你能发现其中的秘密吗?flag形式为 flag{}


解题思路

下载压缩包,打开后是三个没有后缀名的文件,使用010打开查看

640.png

发现不是png,jpg格式,里面有个.jpg,可能是个压缩文件,里面压缩了一个jpg文件。经过查找文档,这个是确实是个zip文件,缺少了50 4b 也就是zip的常见标志:pk两个字符。三个文件是一个zip压缩包分成了三份

一个 ZIP 文件由三个部分组成:
压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志

三个文件刚好分成了这三个部分

part1中CRC值缺失,可由part2中找到;part2中没有压缩文件名可由part1确定

三个文件part1-3分别就代表的zip的三个主要组成部分


压缩源文件数据区

打开一个完整的zip文件,,每个字节的含义逐个分析


640.png


压缩源文件数据区详解:

50 4B 03 04 (4 bytes)即为我们zip格式压缩文件的头文件标记。其中50 4B的ASCII对应的是PK,是创始人Phil Katz的缩写,可以用这个来识别zip格式压缩文件。实际上zip文件的各个部分都以这个为开头

0A 00(2 bytes)解压文件需要的pkware版本,部分也有14 00和14 03的。

00 00(2 bytes):全局定位标记,可以查看zip文件有无加密,有则为01 00,无则为00 00.如果没有设置密码,但我们把这个修改为了01 00则为俗称的伪加密

00 00(2 bytes压缩方式。有些也为08 00

C9 46(2 bytes):最后修改文件时间

36 53(2 bytes):最后修改文件日期

C0 71 DE A0(4 bytes):CRC-32校验码(0AED170C)

05 00 00 00(4 bytes):压缩后尺寸

05 00 00 00(4 bytes):  压缩前尺寸

05 00 (4 bytes):文件名长度。代表扩展记录长度后面,包含的压缩源文件名有几个字节。

00 00(2 bytes):扩展记录长度

31 2E 74 78 74 31(6 bytes):  和前面的05 00对应。可以看到右侧转换出来的即为我们zip文件中包含有1.txt文件


压缩源文件目录区详解:

50 4B 01 02(4 bytes):压缩源文件目录区的文件头标记。和数据区的不同即为01 02

3F 00(2 bytes):  压缩使用的pkware版本

0A 00(2 bytes):解压文件需要的pkware版本

00 00(2 bytes):全局定位标记,这里代表无加密

00 00(2 bytes):压缩方式。有些也为08 00

C9 46 36 53(4 bytes): 上次修改的时间、日期

C0 71 DE A0(4 bytes):CRC-32校验码(0AED170C)和part1的CRC-32效验码一样

05 00 00 00(4 bytes):压缩后尺寸

05 00 00 00(4 bytes):  压缩前尺寸

05 00 (2 bytes):文件名长度

24 00(2 bytes):扩展字段长度

00 00(2 bytes):文件注释长度

00 00 (2 bytes):磁盘开始号

00 00(2 bytes):内部文件属性

20 00 00 00(4 bytes):外部文件属性

00 00 00 00(4 bytes):局部头部偏移量

31 2E 74 78 74 31(6 bytes):  和前面的05 00对应。可以看到右侧转换出来的即为我们zip文件中包含有1.txt文件


压缩源文件目录结束标志详解:
50 4B 05 06(4 bytes):压缩源文件目录结束标志头

00 00(2 bytes):当前磁盘编号

00 00(2 bytes):目录区开始磁盘编号

01 00(2 bytes):本磁盘上记录总数

01 00(2 bytes):目录区中记录总数

57 00 00 00(4 bytes):目录区尺寸大小

00 28 00 00(4 bytes):目录区对第一张磁盘的偏移量

00 00(2 bytes):ZIP文件注释长度


参考:一个zip文件由这样三个部分组成

https://blog.csdn.net/wclxyn/article/details/7288994


把三个文件的文件头进行补全,都要补上 50 4B ,part1 中的01 00 表示文件加密

00 00 00 00 四个字节即为我们缺失的CRC-32校验码

part2 中34 47 56 50 为CRC-32效验码  填充到part1中

640.png


将part1中的文件名:keyvisual.jpg对应的16进制:4B 65 79 56 69 73 75 61 6C 2E 6A 70 67 8D补全到part2中:

640.png

part3中插入 50 4B

640.png


在010中将part2 和part3部分的16进制代码复制粘贴到part1部分的结尾


640.png

ctrl+s保存,给part1的文件名后面加上后缀.zip即可打开我们需要的zip文件:

640.png

有密码,看看是不是伪加密 把01 00 改为00 00 打开还是不行,说明需要爆破

也没有给提示,无脑爆破 ,直接wp破解出来  密码为GyxXaq9   解压后得到一张图片

640.png


使用010打开查看  ,开头标准的FF D8   jpg文件格式


在最后,发现 4B 50 ,猜测是 zip文件逆序

555a04555971626a5a05f447a36f254f.png

py脚本逆序读取文件

    f1=open('KeyVisual.jpg','rb+')f2=open('KeyVisual.zip','wb+')f2.write(f1.read()[::-1])f1.close()f2.close()

    得到一个KeyVisual.zip文件  进行解压, 存在有pyc文件,pyc文件反编译即为py文件

    python在线反编译:http://tools.bugscaner.com/decompyle/

    得到一个py文件 是一个进行加密的py文件 ,加密后的文件为encrypted

    415003004bb3ea4d1af91759e75cffb5.png

    我们可以修改构建解密算法enc1.py

    1

    key生成函数中定义了种子始终为10,所以加解密使用的key都一样,为aSRWXWkhOlteQ3M0

    2

    查看算法为异或,即加解密使用的算法应当一样,直接再次调用加密函数即可解密


    25972c842129534bcee789af8921a96b.png


    对encrypted加密文件解密,得到dncrypted文件

    d629026e66aa88a9e57957657e6df42c.png


    使用010打开,发现是一张png图片 ,加后缀为.png

    d7cd98e259f934559987c54f7835a0e1.png

    修改后打开发现还是原来那张图片

    7e70acafe612a58efcdb0212c0606e98.png


    发现该图片有LSB隐写,但隐写信息加密

    563cf0585e9623145df96a0a1aa1a0a3.png

    猜测是弱密码 使用123456尝试 解密失败,直接看手wp:发现密码为7位大小写字母+数字+特殊符号的密码爆破

    密码:U!lSb29  这

    使用工具cloacked-pixel进行解密

    e2311b307013e7a8ad019b214d57bf76.png

    释放出一个jpg文件

    ce744c53655cf0f8e09002cd4b2059e1.png

    肉眼识别出flag:flag{2ceuagIha7v8mlfod9uas1d86wqer0}

    相关文章
    |
    7月前
    |
    网络协议 Ubuntu Linux
    linux网络配置文件
    Linux网络配置文件因发行版不同而异:Ubuntu使用`/etc/network/interfaces`,Red Hat系列采用`/etc/sysconfig/network-scripts/ifcfg-ethX`,CentOS用`/etc/sysconfig/network`设置主机名和网关,`/etc/resolv.conf`配置DNS。其他文件如`/etc/hostname`和`/etc/nsswitch.conf`也影响网络设置。编辑这些文件时,记得先备份,并可能需重启网络服务以应用更改。具体操作应参考相应Linux发行版的文档。
    81 1
    |
    7月前
    |
    Shell Linux C语言
    【Shell 命令集合 网络通讯 】Linux 查看系统中的UUCP日志文件 uulog命令 使用指南
    【Shell 命令集合 网络通讯 】Linux 查看系统中的UUCP日志文件 uulog命令 使用指南
    97 0
    |
    4月前
    |
    消息中间件 存储 Serverless
    函数计算产品使用问题之怎么访问网络附加存储(NAS)存储模型文件
    函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
    |
    6月前
    |
    JSON 前端开发 JavaScript
    在JavaScript中,异步编程是一种处理非阻塞操作(如网络请求、文件读写等)的重要技术
    【6月更文挑战第12天】JavaScript中的异步编程通过Promise和async/await处理非阻塞操作。Promise管理异步操作的三种状态,防止回调地狱,支持链式调用和并行处理。async/await是ES8引入的语法糖,使异步代码更像同步代码,提高可读性。两者结合使用能更高效地处理复杂异步场景。
    41 3
    |
    7月前
    |
    JavaScript 前端开发 网络安全
    【网络安全 | 信息收集】JS文件信息收集工具LinkFinder安装使用教程
    【网络安全 | 信息收集】JS文件信息收集工具LinkFinder安装使用教程
    392 4
    |
    7月前
    |
    JavaScript 前端开发 UED
    在 JavaScript 中,异步编程和回调函数是处理非阻塞操作(如网络请求、文件读写等)的重要工具
    【5月更文挑战第10天】JavaScript中的异步编程和回调函数用于处理非阻塞操作,提高应用响应性和吞吐量。异步编程通过回调函数、Promises和async/await等方式实现,避免程序因等待操作完成而阻塞。回调函数是异步操作完成后调用的函数,常用于处理网络请求等。然而,回调函数存在嵌套问题和错误处理困难,因此出现了Promises和async/await等更优解决方案。
    55 3
    |
    4月前
    |
    Java
    java网络编程 UDP通信协议实现局域网内文件的发送和接收
    java网络编程 UDP通信协议实现局域网内文件的发送和接收
    java网络编程 UDP通信协议实现局域网内文件的发送和接收
    |
    4月前
    |
    存储 Ubuntu Linux
    NFS服务部署全攻略:从零到一,轻松驾驭网络文件系统,让你的文件共享像飞一样畅快无阻!
    【8月更文挑战第5天】NFS(网络文件系统)能让网络中的电脑无缝共享文件与目录。基于客户端-服务器模式,用户可像访问本地文件般透明操作远程文件。部署前需准备至少两台Linux机器:一台服务器,其余作客户端;确保已装NFS相关软件包且网络通畅。服务器端安装NFS服务与rpcbind,客户端安装nfs-utils。
    135 4
    |
    6月前
    |
    存储 编解码 API
    视觉智能开放平台产品使用合集之如何处理本地文件或网络文件链接
    视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
    网络请求和下载,ping baidu Ctrl + C停掉,wegt命令可以在命令行内下载网络文件
    网络请求和下载,ping baidu Ctrl + C停掉,wegt命令可以在命令行内下载网络文件
    下一篇
    DataWorks