BUUCTF [GUET-CTF2019]zips 1

BUUCTF:https://buuoj.cn/challenges

image-20240521144712363

题目描述:

得到的 flag 请包上 flag{} 提交。

密文:

得到一个attachment.zip文件


解题思路:

1、解压attachment.zip,得到222.zip文件。尝试解压需要密码,使用Ziperello爆破密码,先尝试1~9位纯数字暴力破解,得到密码723456


屏幕截图 2024-05-19 164506

2、解压222.zip,得到111.zip文件。使用Ziperello打开111.zip文件,提示没有读取到加密文件,猜测存在zip伪加密。

屏幕截图 2024-05-19 164527

屏幕截图 2024-05-19 164638

zip伪加密原理

zip伪加密例子

使用010 Editor打开111.zip文件,修改压缩源文件数据区和目录区的全局方式位标记,达到将伪压缩文件恢复到未加密的状态的目的。

image-20240521151732976

解压得到一个zip压缩包和脚本文件

image-20240521152003008

3、尝试解压flag.zip需要密码。使用记事本打开setup.sh文件,如下:

#!/bin/bash
#
zip -e --password=`python -c "print(__import__('time').time())"` flag.zip flag
  1. #!/bin/bash: 这是一个Shebang行,指定了该脚本应使用/bin/bash解释器执行。它是Unix/Linux系统中可执行脚本的标准起始行。
  2. zip -e --password=: 这部分命令调用了zip程序来创建或更新一个ZIP归档文件,并使用-e选项指明需要对存档中的文件进行加密。
  3. python -c "print(__import__('time').time())": 这里嵌入了一个Python命令,用于执行一段Python代码。具体来说,它导入了time模块,并调用其time()函数来获取当前的Unix时间戳。这个时间值将作为接下来操作的密码。
  4. flag.zip flag: 表示要创建或更新的ZIP文件名为flag.zip,并且要将当前目录下的一个名为flag的文件添加到此ZIP文件中。由于前面设置了-e--password,所以在添加过程中会对flag文件进行加密,并使用由Python计算出的时间戳作为加密密码。

这段脚本是用Bash编写的,其主要功能是使用Python计算当前时间(以Unix时间戳形式表示,即从1970年1月1日00:00:00 UTC以来的秒数)并以此时间为密码来加密一个名为flag.zip的ZIP文件,其中包含一个名为flag的文件。

截取其中的print(__import__('time').time())python代码,在Python2环境下运行,得到时间戳格式(Python2与Python3得到的时间戳格式不一样)

1716272025.41

image-20240521153241328

当我们知道密码格式后就可以采用掩码爆破节约时间,使用Ziperello进行掩码爆破,首先定义掩码字符模板,再设置密码模板,选择起始密码就可以开始爆破。(这里我已经知道大致密码,所以为了节约时间,从1500000000.00开始)

image-20240521153442653

得到密码1558080832.15

image-20240521152729804

1558080832.15

使用密码解压flag.zip,得到flag文件,打开得到flag。

image-20240521152847067

flag:

flag{fkjabPqnLawhvuikfhgzyffj}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/840166.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CATIA入门操作——萌新宝宝遇到的奇奇怪怪的问题解决,持续更新中。。。

目录 引出发生肾么事了??鼠标中键旋转不了解决:特征树不显示参数关系 我的窗口去哪了?插曲:草图工具的调出插曲:颜色工具栏显示 弹窗警告警告:创建约束是临时的 操作技巧技巧:快速隐…

Bytebase 2.17.0 - 支持为工单设置标签

🚀 新功能 支持为工单设置标签。 支持显示工单任务执行日志,如影响行数或错误(支持 MySQL 和 PostgreSQL)。 支持在数据库页面为表或列配置分类分级。之前的版本需要通过 DDL 实现,且只支持 MySQL 和 PostgreSQL。…

【传知代码】Modnet 人像抠图-论文复现

文章目录 概述原理介绍核心逻辑ModNet 的结构 环境配置WebUI 小结 论文地址 论文GitHub 本文涉及的源码可从Modnet 人像抠图该文章下方附件获取 概述 人像抠图技术在多个领域有着广泛的应用场景,包括但不限于: 展馆互动拍照:展馆中使用的抠…

【高阶数据结构】 B树 -- 详解

一、常见的搜索结构 适合做内查找: 以上结构适合用于数据量相对不是很大,能够一次性存放在内存中,进行数据查找的场景。如果数据量很大,比如有 100G 数据,无法一次放进内存中,那就只能放在磁盘上了。 如果…

计算机系统基础 8 循环程序

概要 两种实现方法——分支指令实现和专门的循环语句实现以及有关循环的优化。 分支指令实现 倒计数 …… MOV ECX,循环次数 LOOPA:…… …… DEC ECX JNE LOOPA 正计数 …… MOV ECX,0 LOOPA: …… INC ECX CMP …

向郭老师学习研发项目管理

学习研发项目管理思路 通过以下思路来学习研发项目管理: 1、研发项目管理分3级 2、研发项目管理分4类 3、研发项目管理分5大过程组 4、新产品开发项目生命周期分6个阶段 5、研发项目管理分10大知识体系 项目组合、项目集、简单项目3级管理 针对Portfolio组合…

Nodejs及stfshow相关例题

Nodejs及stfshow相关例题 Node.js 是一个基于 Chrome V8 引擎的 Javascript 运行环境。可以说nodejs是一个运行环境,或者说是一个 JS 语言解释器而不是某种库。 Node.js可以生成动态页面内容Node.js 可以在服务器上创建、打开、读取、写入、删除和关闭文件Node.js…

解决无法启动Redis,打开redis-server闪退的问题

【问题】 ① 双击redis-server.exe闪退。 ② 终端运行redis-server没反应。 但是终端运行redis -cli没问题。 【解决方法】 步骤1:找到Redis文件夹,右击,在终端打开。 步骤2:输入命令:redis-server.exe redis.windows…

深入解析力扣161题:相隔为 1 的编辑距离(逐字符比较与动态规划详解)

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容,和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣! 推荐:数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航: LeetCode解锁100…

【简单介绍下爬山算法】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

信息学奥赛初赛天天练-10-组合数学-排列组合-一次彻底搞懂分组分配问题

更多资源请关注纽扣编程微信公众号 平均分组 是指将所有的元素分成所有组元素个数相等或部分组元素个数相等,即m个不同的元素平均分成n个组,有多少种分组方法 由于是平均分组,分组选择元素时会出现重复,因此结果需要除以A(n,n…

代码随想录-算法训练营day46【动态规划08:单词拆分、多重背包!背包问题总结篇!】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 第九章 动态规划part08● 139.单词拆分 ● 关于多重背包,你该了解这些! ● 背包问题总结篇! 详细布置 关于 多重背包,力扣上没有相关的题目,所以今天大家的…

知了传课Flask学习(持续更新)

一、基础内容 1.Flask快速应用 pip install flask from flask import Flaskapp Flask(__name__)app.route(/) def index():return Hello worldif __name__ __main__:app.run() 2.debug、host、port配置 from flask import Flask,requestapp Flask(__name__)app.route(/) d…

【全部更新完毕】2024电工杯A题数学建模详细思路代码文章分享

A 题:园区微电网风光储协调优化配置 摘要 在全球范围内,气候变化和环境污染问题日益严重,减少碳排放和实现可持续发展成为各国的共同目标。新能源,尤其是风能和光伏发电,因其清洁、可再生的特性,正在全球范…

Golang | Leetcode Golang题解之第100题相同的树

题目: 题解: func isSameTree(p *TreeNode, q *TreeNode) bool {if p nil && q nil {return true}if p nil || q nil {return false}queue1, queue2 : []*TreeNode{p}, []*TreeNode{q}for len(queue1) > 0 && len(queue2) > …

nextcloud 安装部署

php版本不对 ubuntu nginx 配置php 网站-CSDN博客 抄自chatgpt ubuntu完全卸载干净某个包-CSDN博客 以及设置基本的php nginx环境参照上面两篇博文 然后参照官方文档 Example installation on Ubuntu 22.04 LTS — Nextcloud latest Administration Manual latest document…

5月30日在线研讨会 | 面向智能网联汽车的产教融合解决方案

随着智能网联汽车技术的快速发展,产业对高素质技术技能人才的需求日益增长。为了促进智能网联汽车行业的健康发展,推动教育链、人才链与产业链、创新链的深度融合,经纬恒润推出产教融合相关方案,旨在通过促进教育链与产业链的深度…

第八节 条件装配案例讲解

一、条件装配的作用是什么 条件装配是 Spring 框架中一个强大的特性&#xff0c;使得开发者能够创建更加灵活和可维护的应用程序。在 Spring Boot 中&#xff0c;这个特性被大量用于自动配置&#xff0c;极大地简化了基于 Spring 的应用开发。 二、条件装配注解 <dependen…

Function Calling 介绍与实战

functions 是 Chat Completion API 中的可选参数&#xff0c;用于提供函数定义。其目的是使 GPT 模型能够生成符合所提供定义的函数参数。请注意&#xff0c;API不会实际执行任何函数调用。开发人员需要使用GPT 模型输出来执行函数调用。 如果提供了functions参数&#xff0c;…