这是攻防世界新手练习区的第十一题,题目如下:

点击下载附件一,发现是一个压缩包,点击解压,发现是需要密码才能解密

先用010editor打开这个压缩包,这里需要知道zip压缩包的组成部分,包括压缩源文件数据区、压缩源文件目录区、压缩源文件目录结束区,具体组成如下:



压缩包是否为伪加密的判断

1、无加密:
(1)压缩源文件数据区的全局加密标志应当为00 00
(2)且压缩源文件目录区的全局方式位标记应当为00 00

2、伪加密:
(1)压缩源文件数据区的全局加密标志应当为00 00
(2)且压缩源文件目录区的全局方式位标记应当为09 00

3、真加密
(1)压缩源文件数据区的全局加密标志应当为09 00
(2)且压缩源文件目录区的全局方式位标记应当为09 00

现在看一下这道题,该压缩包的压缩源文件的数据区如下

50 4B 03 04:文件头标记(0x04034B50)
14 03:解压文件所需 pkware 版本
00 00:全局方式位标记(判断真伪加密的重要标志)
08 00:压缩方式
68 BF:最后修改文件时间
9B 48:最后修改文件日期
FE 32 7D 4B:CRC-32校验
E9 0D 00 00:压缩后尺寸
B5 1B 00 00:未压缩尺寸
09 00:文件名长度
00 00:扩展记录长度

该压缩包的压缩源文件的目录区如下:

50 4B 01 02:目录中文件文件头标记(0x02014B50)
3F 03:压缩使用的 pkware 版本
14 03:解压文件所需 pkware 版本
09 00:全局方式位标记(数据区的加密标志为00 00,所以判断这是伪加密,将09 00 改为00 00即可)
08 00:压缩方式
68 BF:最后修改文件时间
9B 48:最后修改文件日期
FE 32 7D 4B:CRC-32校验(1480B516)
E9 0D 00 00:压缩后尺寸(25)
B5 1B 00 00:未压缩尺寸(23)
09 00:文件名长度
24 00:扩展字段长度
00 00:文件注释长度
00 00:磁盘开始号
00 00:内部文件属性
20 80 ED 81:外部文件属性
00 00 00 00:局部头部偏移量

该压缩包源文件目录结束标志如下:

50 4B 05 06:目录结束的标记(0x06054B50)
00 00:当前磁盘编号
00 00:目录区开始磁盘编号
01 00:本磁盘上纪录总数
01 00:目录区中纪录总数
5B 00 00 00:目录区尺寸大小
10 0E 00 00:目录区对第一张磁盘的偏移量
00 00:ZIP 文件注释长度

所以,我们只要将该压缩包的压缩源文件的全局方式位标记由09 00 改为00 00即可解压该文件,
通过解压文件我们可以得到一个文本文档。打开后可以看到是一些base64字符,我们写个脚本跑一下

import base64
bin_str=''
b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
with open('stego.txt','r') as f: # 这里要改成你的文件路径
for line in f.readlines():
s64="".join(line.split())
r64="".join(str(base64.b64encode(base64.b64decode(s64)),'utf-8').split())
offset=abs(b64chars.index(s64.replace('=','')[-1])-b64chars.index(r64.replace('=', '')[-1]))
equal=line.count('=')
if equal:
bin_str += bin(offset)[2:].zfill(equal * 2)
print(''.join([chr(int(bin_str[i:i + 8], 2)) for i in range(0,len(bin_str),8)]))

代码运行结果如下:

所以这道题的flag如下:

flag{Base_sixty_four_point_five}

以上就是我对这道题的解法。因本人菜鸡一只,如果有什么不对的地方,实属正常。还请各位大佬予以指正,谢谢!

攻防世界-MISC:base64stego的更多相关文章

  1. 攻防世界misc——János-the-Ripper

    攻防世界misc---János-the-Ripper 附件题目,题目的文件名为:misc100. 下载后,拖入linux中,binwalk发现有隐藏文件.用"strings  János- ...

  2. 攻防世界 Misc 新手练习区 stegano CONFidence-DS-CTF-Teaser Writeup

    攻防世界 Misc 新手练习区 stegano CONFidence-DS-CTF-Teaser Writeup 题目介绍 题目考点 隐写术 摩斯密码 Writeup 下载附件是PDF文件打开,研究一 ...

  3. 攻防世界 Misc 新手练习区 ext3 bugku Writeup

    攻防世界 Misc 新手练习区 ext3 bugku Writeup 题目介绍 题目考点 WinHex工具的使用 linux磁盘挂载mount命令 Writeup 下载附件拖进winhex分析一下,查 ...

  4. 攻防世界 Misc 新手练习区 gif Writeup

    攻防世界 Misc 新手练习区 gif Writeup 题目介绍 题目考点 仔细联想 字符转换 Writeup 下载附件并打开 104张黑白图 发现是一堆黑色和白色的图片,按某种规律排列,猜想flag ...

  5. 攻防世界 Misc 新手练习区 坚持60s Writeup

    攻防世界 Misc 新手练习区 坚持60s Writeup 题目介绍 题目考点 java反编译 jd-gui 的使用 Writeup 下载附件并打开 kali执行命令 java -jar 9dc125 ...

  6. 攻防世界 Misc 新手练习区 give_you_flag Writeup

    攻防世界 Misc 新手练习区 give_you_flag Writeup 题目介绍 题目考点 gif图片分离 细心的P图 二维码解码 Writeup 下载附件打开,发现是一张gif图片,打开看了一下 ...

  7. 攻防世界 Misc 新手练习区 如来十三掌 Writeup

    攻防世界 Misc 新手练习区 如来十三掌 Writeup 题目介绍 题目考点 佛曰加密.base64.Rot13等加密方法的了解 Writeup 下载并打开附件 联想到佛曰加密,复制内容到 佛曰加密 ...

  8. 攻防世界MISC进阶之签到题

    攻防世界MISC进阶之签到题    第一步:分析    第二步:实操    第三步:答案第一步:分析难度系数:1星题目来源: SSCTF-2017题目描述:SSCTF线上选举美男大赛开始了,泰迪拿着他 ...

  9. 攻防世界-MISC:glance-50

    这是攻防世界MISC高手进阶区的题目,题目如下: 点击下载附件一,得到一张GIF动图如下 找个网站给分离一下,将gif分离为图片,共201张,然后拼接在一起即可得到flag 所以这道题的flag如下: ...

随机推荐

  1. C语言对Mysql函数操作

    数据类型 MYSQL MYSQL结构代表一个数据库连接句柄,包含有关服务器的连接状态的信息,几乎所有函数都是用到它 typedef struct st_mysql { NET net; /* Comm ...

  2. Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用什么符号表示的?

    (1)不可中断状态:进程处于睡眠状态,但是此刻进程是不可中断的.不可中断,指进程不响应异步信号. (2)暂停状态/跟踪状态:向进程发送一个 SIGSTOP 信号,它就会因响应该信号 而进入 TASK_ ...

  3. Where和having都是条件筛选关键字,它们有什么分别?

    WHERE是在数据分组前进行条件过滤, HAVING子句是在数据分组后进行条件过滤,WHERE子句中不能使用聚合函数,HAVING子句可以使用聚合函数. 需要注意说明:当同时含有where子句.gro ...

  4. spring-boot-learning-事务处理

     事务处理的重要性: 面对高井发场景, 掌握数据库事务机制是至关重要的,它能够帮助我们在一定程度上保证数据的一致性,并且有效提高系统性能,避免系统产生岩机,这对于互联网企业应用的成败是至关重要的. 以 ...

  5. 在 Spring 中如何注入一个 java 集合?

    Spring 提供以下几种集合的配置元素:类型用于注入一列值,允许有相同的值.类型用于注入一组值,不允许有相同的值.类型用于注入一组键值对,键和值都可以为任意类型.类型用于注入一组键值对,键和值都只能 ...

  6. kali Linux 渗透测试 | ettercap图形界面(ARP 欺骗 + DNS欺骗)

    上次我们使用 arpspoof 工具在命令行中完成了 arp 欺骗实验,今天我们用另一种工具 ettercap 工具来实现.ettercap支持图形化操作,对新手非常友好,并且操作非常简单, ette ...

  7. 【译】客户端存储(Client-Side Storage)

    本文转载自:众成翻译译者:文蔺链接:http://www.zcfy.cc/article/660原文:http://www.html5rocks.com/en/tutorials/offline/st ...

  8. jQuery Validate多实例讲解

    规则 描述 required:true 必须输入的字段. remote:"check.php" 使用 ajax 方法调用 check.php 验证输入值. email:true 必 ...

  9. 浅谈Nodejs应用的主文件index.js的组成部分

    前言 Node妹子的问世,着实让我们前端攻城狮兴奋了一把,尤其本屌听说Javascript可以写服务端后,兴奋的像是看到了二次元萝莉的胖子...(●'◡'●).呃哼...YY先到这里,原谅本屌是个二次 ...

  10. 小小标签,强大功能——深藏不露的 <input>

    <input> 虽只是一个看似简单的 HTML 表单元素,但它这么一个单一的元素,就有多达 30 多个属性(attribute),相信无论你是个小菜鸟还是像我一样写了 15 年 HTML ...