[LitCTF 2023]ssvvgg(Steghide爆破)

news2024/11/18 14:31:02

题目是一张.svg的图片

关于SVG的简介:

SVG格式文件是可缩放矢量图形文件的缩写,是一种标准的图形文件类型,用于在互联网上渲染二维图像。与其他流行的图像文件格式不同,SVG格式文件将图像存储为矢量,这是一种基于数学公式由点、线、曲线和形状组成的图形。图像文件格式可以分为两类:光栅图形和矢量图形。

我们熟知的PNG和JPEG就是光栅图形格式,它们将图像信息存储在彩色正方形网格中,也称为位图。该位图中的正方形组合在一起形成一个连贯的图像,很像计算机屏幕上的像素。光栅图形适用于需要指定每个像素的确切颜色的照片等高度详细的图像,具有固定的分辨率,因此增加大小会降低图像的质量。

矢量图形格式(如 SVG 和 PDF)的工作方式不同,矢量格式将图像存储为一组点和点之间的线,数学公式决定了这些点和线的位置和形状,并在放大或缩小图像时保持它们的空间关系,矢量图形文件还存储颜色信息,甚至可以显示文本。

使用010editor打开附件,发现一串base64编码,尝试解码

 从开头可以看出是jpg格式,将文件保存

并且我们在结尾可以看到steghide并且密码为6位数字

 关于Steghide的介绍:

这是一个命令行软件,可以用来将文件隐藏在图片或音频文件中,当然也可以从隐藏有文件的图片或音频中把隐藏文件提取出来,但是需要密钥。

假设密码是123456

该命令的用法:

将secret.txt文件隐藏到my.jpg中:steghide embed -cf my.jpg -ef secret.txt -p 123456

从my.jpg中提取出secret.txt文件:steghide extract -sf my.jpg -p 123456
 

由于steghide本身不具备爆破密码的功能,这里我们需要借助shell脚本

脚本1:

#bruteStegHide.sh 
#!/bin/bash

for line in `cat $2`;do
    steghide extract -sf $1 -p $line > /dev/null 2>&1
    if [[ $? -eq 0 ]];then
        echo 'password is: '$line
        exit
    fi  
done 

脚本2:

#!/bin/bash

if [ $# -lt 2 ]; then
    echo "Usage: $0 [steghide file] [dictionary file]"
    exit 1
fi

file=$1
dict=$2

if [ ! -f $file ]; then
    echo "Error: File not found: $file"
    exit 1
fi

if [ ! -f $dict ]; then
    echo "Error: Dictionary not found: $dict"
    exit 1
fi

while read password; do
    if steghide extract -sf $file -p $password &> /dev/null; then
        echo "Password found: $password"
        exit 0
    else
        echo "Trying: $password"
    fi
done < $dict

echo "Password not found"
exit 1

在使用脚本前,我们还需要自己先创建用来爆破的密码字典

使用crunch命令,因为密码是6位的数字,我们创建000000-999999的字典即可

 

关于crunch命令的用法:

crunch <min-len> <max-len> [<charset string>] [options]

min-len crunch要开始的最小长度字符串,max-len crunch要开始的最大长度字符串,charset string 是指定设置的字符集,否则将使用缺省的字符集设置,缺省的设置为小写字符集,大写字符集,数字和特殊字符(符号),options则是后面可以追加的一些参数。

使用脚本进行爆破

我们使用./来执行脚本,如果权限不够就使用chmod命令,755表示加上可执行权限

 执行脚本:./脚本名 要爆破的图片名 密码字典

这里要说一下:

爆破到正确key时会自动将txt文档分离出来,如果已经存在分离出txt时,再次爆破是找不到密码的

通过爆破得知密码是666666,且自动分离出了一个flag.txt

 打开即可看到flag

 此时已经存在这个flag.txt了,我们知道密码是666666,但是我们再去跑脚本

你会发现提示密码未找到,这是因为已经存在被分离出的文件

 当然我们如果已经知道密码,也可以steghide命令直接提取

最终flag为

NSSCTF{svg?_base642png!&steghide!}

 

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

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

相关文章

SpringCloud(27):授权控制实现

很多时候&#xff0c;我们需要根据调用来源来判断该次请求是否允许放行&#xff0c;这时候可以使用 Sentinel 的来源访问控制&#xff08;黑白名单控制&#xff09;的功能。来源访问控制根据资源的请求来源&#xff08;origin&#xff09;判断资源访问是否通过&#xff0c;若配…

运营-18.积分体系概念

积分体系是一种通过平台补贴来提升用户忠诚度、为平台各项业务的导流的运营手段&#xff1b; 作用 1. 积分体系可以引导用户逐渐投入沉没成本&#xff0c;包括时间、精力和金钱&#xff1b; 2. 沉没成本越高&#xff0c;用户越难以离开&#xff1b; 3. 积分体系可以给其他业务导…

数据库实训心得体会_数据库实习个人总结

数据库实训心得体会篇一一个月的数据库实训就转眼间就上完了&#xff0c;期间讲解了一个学生管理系统&#xff0c;最后还做了一个小的数据库链接作业。现在就说说关于vb链接的数据库的一些方法。 首先说数据库&#xff0c;简单的说就是建表格,然后把一张一张的表格和在一起,成为…

nginx判断访问的是不是index.html如果是且index.html存在直接返回

可以通过以下配置实现此功能&#xff1a; 复制server {listen 80;server_name example.com;root /var/www/example.com;index index.html;location / {try_files $uri $uri/ index;}location index {if (-f $document_root/index.html) {return 200;}rewrite ^ /index.html la…

Spring源码(一) — 序言

序言 Java程序员的日常开发一定都离不开Spring的框架&#xff0c;从Spring、SpringMVC、SpringBoot、SpringCloud… 而Spring框架就是Spring家族中最基础也是最重要的一个框架。 Spring 我们常说的Spring往往都绕不开IOC&#xff08;控制反转&#xff09;和AOP&#xff08;切…

Zebec生态进展迅速,频被BitFlow、Matryx DAO等蹭热度碰瓷

进入到 2023 年以来&#xff0c; Zebec 生态的整体发展突飞猛进&#xff0c;除了流支付协议 Zebec Protocol 不断通过收购来扩大自身流支付业务、与万事达等合作推出 Zebec Card 等在支付业务上&#xff0c;实现进展外&#xff0c;其社区驱动的Layer3 模块化链 Nautilus Chain …

GP-NFC-Management of Multiple Secure Elements

GP_Mobile Task Force Requirements for NFC Mobile Management of Multiple Secure_Elements_v1.0.pdf 一、简介 在不久的将来&#xff0c;NFC 非接触式手机有望变得无处不在。 它们将用作支付卡、交通票、忠诚卡、访问控制徽章和许多其他非接触式服务卡。 一些试点已经在全…

CNN详细学习

前馈神经网络 常见激活函数 sigmoid函数 梯度消失与爆炸 通用逼近定理 根据通用近似定理&#xff0c;对于具有线性输出层和至少一个使用“挤压”性质的激活函数的隐藏层组成的前馈神经网络 只要其隐藏层神经元的数量足够&#xff0c;它可以以任意的精度来近似任何从一个定义…

java矢量切片实现

概述 可通过多种方式实现矢量切片的制作&#xff0c;前面讲到了基于postgis数据库、tippecanoe、Qgis等方式&#xff0c;本文讲述基于spring Boot框架下java的实现。 实现效果 实现代码 后端代码 引入依赖 <dependency><artifactId>giscat-vector-mvt</art…

Microsoft Office 2021安装

哈喽&#xff0c;大家好。今天一起学习的是office2021的安装&#xff0c;有兴趣的小伙伴也可以来一起试试手。 一、测试演示参数 演示操作系统&#xff1a;Windows 11 支持Win10安装&#xff0c;不支持Win7、XP系统 系统类型&#xff1a;64位 演示版本&#xff1a;cn_office_…

公有云弊端尽显,“云回迁”真的来了吗?

5到10年前&#xff0c;如果一家企业制定数字化转型战略&#xff0c;那么这项战略的核心大概率是将业务迁移上云。 现在&#xff0c;多数企业的业务已在云中“开花结果”&#xff0c;与以往不同的是&#xff0c;原先的一“朵”云变成了一“片”云。 没错&#xff0c;多云战略正…

Java集合底层原理总结

文章目录 一、集合分类二、遍历集合方式三、单列集合3.1 List3.1.1 ArrayList底层分析3.1.2 LinkedList底层分析 3.2 Set3.2.1 HashSet&#xff08;无序&#xff09;底层分析3.2.2 LinkedHashSet&#xff08;有序&#xff0c;存取一致&#xff09;3.2.3 TreeSet&#xff08;可排…

[LitCTF 2023]easy_shark

下载附件解压出现密码提示 使用010editor打开&#xff0c;发现frflags和deflags都被修改了&#xff0c;这就会造成压缩包伪加密 将它们都改回0&#xff0c;另存为再打开&#xff0c;不再出现密码提示 使用wirshark打开 过滤http并追踪&#xff0c;在最后一个包里找到了类似fla…

车载以太网 - SomeIP - 协议用例 - on-wire

目录 Specification of the SOME/IP on-wire format 1.1、验证Response报文中的源IP地址为Request报文中的目标IP地址

搭建stm32电机控制代码框架(二)——Stm32CubeMx配置定时器

搭建了基础的环境&#xff0c;配置了一个简单的工程后&#xff0c;CubeMx的基本操作就会了。然后基于这个操作往下推进&#xff0c;开始对关键模块定时器的攻略&#xff0c;这个部分需要先熟悉一下Stm32的定时器基本原理。 《STM32参考手册》中仅对定时器的介绍就已经占了100多…

C++的最后一道坎 | 百万年薪的程序员

| 导语 C 的起源可以追溯到 40 年前&#xff0c;但它仍然是当今使用最广泛的编程语言之一&#xff0c;C发明人Bjarne Stroustrup 一开始没想到 C 会获得如此大的成功&#xff0c;他说&#xff1a;“C 的成功显然令人惊讶。我认为它的成功取决于其最初的设计目标&#xff0c;就是…

用nginx实现一个直播服务—RTMP推流和HTTP-FLV拉流

目录 一、环境准备 二、安装编译nginx所需的安装包和下载nginx原代码包 三、nginx配置 四、启动nginx服务 五、测试推流和拉流服务 六、摄像头数据采集 七、查看统计 这篇文章主要记录用nginx实现直播服务&#xff0c;通过RTMP推流和通过HTTP-FLV或RTMP拉流&#xff0c;…

DJ5-4 链路层交换机

目录 一、链路层交换机 二、交换机&#xff1a;支持多节点同时传输 三、交换机&#xff1a;转发表或称交换表 四、交互机&#xff1a;自学习 1. 单个交换机自学习/转发的例子 2. 多个交换机自学习/转发的例子 五、交换机&#xff1a;数据帧的过滤/转发 六、交换机的交换…

css基础技巧

1. emmet语法 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>…

如何在CSDN获取更多的铁粉?

一、铁粉的定义 要想获取铁粉&#xff0c;首先我们得知道什么是铁粉&#xff0c;根据官方给出定义是下面这样的&#xff1a; 【铁粉】具体规则如下&#xff1a; 铁粉 90 天内有阅读&#xff0c;购买专栏或其他互动&#xff0c;并且原力等级 > 0 的粉丝。 也就是说你的原力…