纵横靶场工控安全wp:奇怪的文件。

1 篇文章 0 订阅
1 篇文章 0 订阅

奇怪的文件

单独记录这个题的原因是:

涉及到了太多的知识盲区,做这个题真的帮助我学到了很多。例如真真实实的了解了zip文件格式的详细分析、pyc反编译、lsb图片隐写等等。可惜纵横靶场上的wp太过简洁,不适合新手阅读(还要浪费积分),所以本文以一个真实的新手思路来解决这个问题~希望能帮助自己回忆的同时能更好的帮助其他人。

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

文件下载下来是三个不知什么格式的文件,一开始采用010分析part1,只能看到文件中似乎存在jpg文件

RhGC4A.png

所以一开始的想法是在kali中直接binwalk提取隐藏文件。

事实证明我的想法还是太过简单了:嘶,竟然提取不出来,foremost也不行= =那为啥文件中会有一个jpg格式的隐藏文件?

在这里插入图片描述
好了接下来就到了我们请神的时候了!反手一个wp请神:

part1、part2、part3分别对应的是ZIP压缩包的压缩源文件数据区、压缩源文件目录区和压缩源文件目录结束标志。

修复的方法是:在每一部分前添加50 4b(也就是zip的常见标志:pk)两个字节;

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

现在回头看,就能猜到为什么提取不出来jpg文件了。。因为人家根本就是一个缺失的文件,二进制分析中的jpg代表的是源压缩文件中存在jpg文件。三个文件part1-3分别就代表的zip的三个主要组成部分(这。。哪个菜鸡能想得到不过理性分析:有了一定的知识广度,根据前面的分析确实可以判断出是zip压缩文件的各个部分)

现在根据其他师傅的wp可以展开我们后面的工作了。


在这之前还是需要详细了解下zip文件的格式分析:ZIP压缩算法原理详解

为了更加直观的详细分析压缩源文件数据区的格式,我们随便选取一个电脑中存在的压缩文件:01.zip来详细分析:

RhYJk4.png

如上图所示,我们对压缩源文件数据区每个字节的含义逐个分析:

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

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

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

08 00(2 bytes):压缩方式。固定为08 00

8E 92(2 bytes):最后修改文件时间

DD 52(2 bytes):最后修改文件日期

E5 3E 05 5D(4 bytes):CRC-32校验码(5D053EE5)

BC F2 49 00(4 bytes):压缩后尺寸

71 7E 69 00(4 bytes):压缩前尺寸

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

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

30 31 2E 70 63 61 70(7 bytes):和前面的07 00对应。可以看到右侧转换出来的即为我们zip文件中包含有01.pcap流量包。

其他两个部分:压缩源文件目录区和压缩源文件目录结束标志的详细分析这里就不再详细赘述,具体可参考:ZIP文件组成

下面我们先补全part1-part3的文件头50 4b。注意:每个part都要先加上50 4b!!!。我这里只展示了part1部分的添加。


part1压缩源文件数据区详细分析

Rhw29g.png

从上面我们仍然可以按照前面的进行详细分析:

开头和前面分析的一样,唯一值得注意的是全局定位标记01 00,代表我们后面恢复的压缩文件有密码= =提前做好准备(哎呀 好复杂)

我们直接从jpg那里回头推:0D 00代表压缩文件名为13个字节:keyvisual.jpg。

那前面的76 9A 06 00后面的8个字节即为压缩的前后尺寸。

而从前面推的08 00 压缩方式后面的四个字节:E7 BE 03 4F即为我们上次修改的时间、日期。

分析到这里就可以看到四个字节的00 00 00 00即为我们缺失的CRC-32校验码。

因此我们可以回头看part2压缩源文件目录区部分:


part2压缩源文件目录区详细分析

补全了开头的50 4B后:

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

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

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

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

08 00(2 bytes):同part1

E7 BE 03 4F(4 bytes):上次修改的时间、日期。同part1

34 47 56 50(4 bytes):我们需要的CRC-32校验码。用这个去补全part1的00 00 00 00

76 9A 06 00(4 bytes):压缩前尺寸。同part1

E2 9C 06 00(4 bytes):压缩后尺寸。同part1

0D 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):局部头部偏移量

RhBid0.png

上面即为对part2压缩源文件目录区的详细分析,可以得到我们需要的CRC-32校验码:34 47 56 50

对part1部分补全:(如红字)

在这里插入图片描述

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


part3压缩源文件目录结束标志详细分析

RhsQwn.png

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

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

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

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

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

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

A1 9A 06 00(4 bytes):目录区对第一张磁盘的偏移量

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


前面已经完成了zip文件每个部分的补全操作。下面将三个部分整合为一个文件:

具体操作:在010中将part2 和part3部分的16进制代码复制粘贴到part1部分的结尾。如下图所示
在这里插入图片描述

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

RhyJAI.png

可以看到:如我们前面分析的一样,zip文件果然有加密~


暴力破解

题目中没有任何和压缩文件有关的信息,更不用谈和压缩文件密码有关的信息了= =

所以似乎我们只能采用暴力破解来获取密码。如下图所示:暴力破解要至少一天的时间。。。

RhcclT.png

虽然肯定是可以破解出来,但所耗的时间成本太大了。。真正比赛也不会给这么多时间(按道理应该会给提示的)但不论是题目,还是我们恢复出的zip压缩文件中的注释,都没有我们需要的密码信息,所以只能硬着头皮上了。

这里为了不浪费时间直接用wp破解出来(wp永远嘀神!滑稽)

Rhg8HJ.png

把压缩文件里的jpg图片解压出来,发现:

什么都发现不了~没有我们需要的flag。一般来说题出到这里已经差不多了= =(收手吧,阿祖!外面全是警察.jpg)

在这里插入图片描述

没办法,只能继续十六进制分析了~

在这里插入图片描述

检查文件头什么的也没问什么问题,搜索常见字符串也没有发现。。。

在这里插入图片描述

没办法,请神吧~


zip文件逆序

解压后得到一个JPG文件,在文件末尾附加信息,经识别,是一个zip文件的逆序

RhI8te.png

看到jpg文件的最后,果然有zip文件的文件头:pk的逆序kp。

看到这里真的是心中直呼:6666.真的是山路十八弯啊~这种逆序操作,放到binwalk里面照样也是分析不出来的= =

接下来就是把白色部分的zip逆序(010editor还是挺给力的,识别很方便),倒过来后在生成一个新的zip文件了:

具体流程:

先将需要逆序的部分十六进制文件复制生成一个新的文件:reverse

Rh7w0x.png

编写py脚本逆序读取文件:

# coding:utf-8 
f1 = open('reverse','rb+')
f2 = open('reverse.zip','wb+')
f2.write(f1.read()[::-1])
f1.close()
f2.close()

执行py文件得到reverse.zip。


pyc文件反编译

解压zip文件,发现文件中存在有pyc文件,pyc文件反编译即为py文件。

在这里插入图片描述

直接使用在线pyc反编译工具反编译pyc文件

得到enc.py为加密算法的代码,根据此我们可以修改构建解密算法enc1.py

RhOJyQ.png

对encrypted加密文件解密,得到decrypted文件:

RhORT1.png

扔进010,发现解密后的文件为png文件,所以直接修改后缀名后打开:喂,怎么兜兜转转又是这个图?wtf

在这里插入图片描述

老规矩:请神吧。(我已经被折腾废了~)


lsb隐写密码爆破

该图片有lsb隐写,但隐写信息加密,使用https://github.com/livz/cloacked-pixel中的工具对隐写密码爆破,密码为U!lSb29
在这里插入图片描述

从decrypted.png中释放出来一个jpg文件,打开文件发现是一半flag

RhzS5n.png

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

总结:难,好难,真难!

部分wp参考:

1、ctfhub

2、纵横靶场附件wp

靶场,是指为信息安全人员提供实战演练、渗透测试和攻防对抗等训练环境的虚拟或实体场地。在不同的领域中,靶场扮演着重要的角色,尤其是在网络安全领域,靶场成为培养和提高安全专业人员技能的重要平台。 首先,靶场安全从业者提供了一个模拟真实网络环境的平台。通过构建类似实际网络的拓扑结构、部署各种安全设备和应用,靶场可以模拟出多样化的网络攻防场景。这使得安全人员能够在安全的环境中进行实际操作,全面提升其实战能力。 其次,靶场是渗透测试和漏洞攻防演练的理想场所。在靶场中,安全专业人员可以模拟攻击者的行为,发现系统和应用的漏洞,并进行渗透测试,从而及时修复和改进防御机制。同时,这也为防御方提供了锻炼机会,通过对抗攻击提高防御能力。 靶场的搭建还促进了团队协作与沟通。在攻防对抗中,往往需要多人协同作战,团队成员之间需要密切配合,共同制定攻击和防御策略。这有助于培养团队合作意识,提高协同作战的效率。 此外,靶场为学习者提供了一个安全的学习环境。在靶场中,学生可以通过实际操作掌握安全知识,了解攻击技术和防御策略。这样的学习方式比传统的理论课程更加生动直观,有助于深化对安全领域的理解。 最后,靶场也是安全社区交流的平台。在靶场中,安全从业者可以分享攻防经验,交流最新的安全威胁情报,共同探讨解决方案。这有助于建立更广泛的安全社区,推动整个行业的发展。 总体而言,靶场在信息安全领域具有重要地位,为安全专业人员提供了实战演练的机会,促进了团队协作与沟通,为学习者提供了安全的学习环境,同时也是安全社区交流的重要平台。通过靶场的实践操作,安全从业者能够更好地应对不断演变的网络威胁,提高整体的安全水平。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C1ovd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值