首页 > 其他分享 >CTF学习-MISC杂项解题思路

CTF学习-MISC杂项解题思路

时间:2024-09-11 15:22:11浏览次数:14  
标签:文件 隐写 加密 winhex MISC CTF 使用 杂项 图片

文件操作与隐写

文件类型识别

 

1.File命令

当文件没有后缀名或者有后缀名而无法正常打开时,根据识别出的文件类型来修改后缀名即可正常打开文件。
使用场景:不知道后缀名,无法打开文件。格式: file myheart
image-20200814162422418

2.winhex

通过winhex.程序中可以查看文件头类型,根据文件头类型判断出文件类型
使用场景: windows 下通过文件头信息判断文件类型

image-20200814162539651

3.文件头残缺/错误

通常文件无法正常打开有两种情况,一种是文件头部残缺, 另一种是文件头部字段错误。针对文件头部残缺的情况,使用winhex或者010 Editor程序添加相应的文件头,针对头部字段错误,可以找一个相同类型的文件进行替换。
使用场景:文件头部残缺或文件头部字段错误无法打开正常文件。
格式: file 文件名

image-20200814163338518

文件分离操作

 

1.Binwalk工具

Binwalk是Linux下用来分析和分离文件的工具,可以快速分辨文件是否由多个文件合并而成,并将文件进行分离。如果分离成功会在目标文件的目录。
同目录下生成一个形如_ 文件名_ extracted的文件目录,目录中有分离后的文件。
用法:
分析文件: binwalk filename
分离文件: binwalk -e filename

2.foremost

如果binwalk无法正确分离出文件,可以使用foremost,将目标文件复制到kali中,成功执行后,会在目标文件的文件目录下生成我们设置的目录,目录中会按文件类型分离出文件。
用法:
foremost 文件名 -o 输出目录名

image-20200814165244610

3.dd

当文件自动分离出错或者因为其他原因无法自动分离时,可以使用dd实现文件手动分离。

格式:
dd if=源文件 of=目标文件名名bs=1 skip=开始分离的字节数
参数说明:
if=file #输入文件名,缺省为标准输入。
of=file #输出文件名,缺省为标准输出。
bs=bytes #同时设置读写块的大小为bytes,可代替ibs和obs。
skip=blocks #从输入文件开头跳过blocks个块后再开始复制。

image-20200814170342974

image-20200814170840959

4.Winhex

除了使用dd外,还可以使用winhex实现文件手动分离,将目标文件拖入winhex中,找到要分离的部分,点击复制即可。
使用场景: windows 下利用winhex程序对文件进行手动分离
例:新建一个文件,文件大小1byte, 在文件开头位置点击粘贴,弹出提示框选否、确定,将文件保存为想要的后缀即可。

image-20200814170942114

5.010Editor

将某块区域文件保存的方式如下:

image-20200814171213727

记事本里存放的二进制文件转成二进制文件

image-20200814171742467

image-20200814171845330

image-20200814171940447

文件合并操作

 

1.Linux下的文件合并

使用场景: linux 下,通常对文件名相似的文件要进行批量合并
格式: cat 合并的文件>输出的文件

完整性检测: linux下计算文件md5:
md5sum 文件名

2.Windows下的文件合并

使用场景:windows下,通常要对文件名相似的文件进行批量合并
格式: copy/B合并的文件输出的文件命令

完整性检测: windows 下计算文件md5:
certutil -hashfile 文件名 md5

文件内容隐写

文件内容隐写,就是直接将KEY以十六进制的形式写在文件中,通常在文件的开头或结尾部分,分析时通常重点观察文件开头和结尾部分。如果在文件中间部分,通常搜索关键字KEY或者flag来查找隐藏内容。
使用场景: windows下, 搜索隐写的文件内容

1.Winhex/010Editor

通常将要识别的文件拖入winhex中,查找具有关键字或明显与文件内容不和谐的部分,通常优先观察文件首部和尾部,搜索flag或key等关键字,最后拖动滚轮寻找。

2.Notepad++

使用notepad++打开文件,查看文件头尾是否有含有关键字的字符串,搜索flag或key等关键字,最后拖动滚轮寻找。
另外通过安装插件HEX-Editor可以实现winhex的功能。

图片隐写术

图片隐写的常见隐写方法
1.细微的颜色差别
2.GIF图多帧隐藏
1.颜色通道隐藏
2.不同帧图信息隐藏
3.不同帧对比隐写
3.Exif信息隐藏
4.图片修复
1.图片头修
2.图片尾修复
3.CRC校验修复
4.长、宽、高度修复
5.最低有效位LSB隐写
6.图片加密
1.Stegdetect
2.outguess
3.Jphide
4.F5

图片文件隐写

 

1.Firework

使用winhex打开文件时会看到文件头部中包含firework的标识,通过firework可以找到隐藏图片。
使用场景:查看隐写的图片文件

image-20200814200754023

2.Exif

Exijf按照PEG的规格在PEG中插入一些图像/数字相机的信息数据以及缩略图像可以通过与PEG兼容的互联网浏览器/图片浏览器/图像处理等一些软件来查看Exift格式的图像文件就跟浏览通常的PEG图像文件一样,图片右键属性,查看exif或 查看详细信息,在相关选项卡中查找flag信息。

image-20200814201336619

3.Stegsolve

当两张jpg图片外观、大小、像素都基本相同时,可以考虑进行结合分析,即将两个文件的像素RGB值进行XOR、ADD、SUB等操作,看能否得到有用的信息,StegSolve可以方便的进行这些操作。
使用场景:两张图片信息基本相同

image-20200814201519752

4.LSB(最低有效位Least Significant Bit)

LSB替换隐写基本思想是用嵌入的秘密信息取代载体图像的最低比特位,原来的的7个高位平面与替代秘密信息的最低位平面组合成含隐藏信息的新图形。
1.像素三原色(RGB)
2.通过修改像素中最低位的1bit来达到隐藏的效果
3.工具: stegsolve、 zsteg、 wbstego4、 python脚本

image-20200814202139107

image-20200814202251643

zsteg工具

detect stegano-hidden data in PNG & BMР
Installation
root@kali:/# gem install zsteg
检测LSB隐写
zsteg xxx.png

image-20200814202621885

wbstego4工具
解密通过1sb加密的图片

python脚本来处理
将以下脚本放在kali中运行,将目标文件放在脚本同目录下,将脚本中的文件名修改为文件名,运行python即可

image-20200814215001502

5.TweakPNG

TweakPNG是一款简单易用的PNG图像浏览工具,它允许查看和修改一些PNG图像文件的元信息存储。使用场景:文件头正常却无法打开文件,利用TweakPNG修改CRC
例:
1.当PNG文件头正常但无法打开文件,可能是CRC校验出错,可以尝试通过TweakPNG打开PNG,会弹出校验错误的提示,这里显示CRC是fe1a5ab6,正确的是b0a7a9f1。打开winhex搜索fe1a5ab6将其改为b0a7a9f1。

  1. 文件头正常却无法打开文件,利用TweakPNG 修改CRC....
  2. 有时CRC没有错误,但是图片的高度或者宽度发生了错误,需要通过CRC计算出正确的高度或者宽度。可以用下面的py脚本,需要改文件位置和TweakPNG得到的CRC实际值,用计算出高度,利用01Editor修改宽高

image-20200814220651744

6. Bftools

bftools用于解密图片信息。
使用场景:在windows的cmd下,对加密过的图片文件进行解密格式:
Bftools .exe decode braincopter要解密的图片名称-output输出文件名
Bftools.exe run.上一步输出的文件

image-20200814221558142

7.SilentEye

silenteye是一款可以将 文字或者文件隐藏到图片的解密工具。
使用场景: windows' 下打开silentEye工具,对加密的图片进行解密
例:
1.使用silentEye程序打开目标图片,点击image一>decode,点击decode,可以查看隐藏文件,点击保存即可

2.如果需要密码,勾选encrypteddata,输入密码和确认密码,点击decode再解密

image-20200814221948064

8.JPG图像加密

1)Stegdetect工具探测加密方式

Stegdetect.程序主要用于分析PEG文件。因此用stegdetect 可以检测到通过Steg、JPHide. OutGuess、 Invisible Secrets、F5、appendX和Camouflage等这些隐写工具隐藏的信息。
stegdetect xxx.jpg
stegdetect -s 敏感度xx.jpgexi

image-20200814222019292

2)Jphide

Jphide是基于最低有效位LSB的JPEG格式图像隐写算法.例:
Stegdetect提示jphide加密时,可以用Jphs.工具进行解密,打开jphswin.exe, 使用open jpeg打开图片,点击seek,输入密码和确认密码,在弹出文件框中选择要保存的解密文件位置即可,结果保存成txt文件。

image-20200814222221167

3.Outguess

outguess 一般用于解密文件信息。
使用场景:Stegdetect识别出来或者题目提示是outguess加密的图片该工具需编译使用: ./configure && make && make install
格式: outguess -r 要解密的文件名输出结果文件名

image-20200814222247892

4.F5

F5一般用于解密文件信息。
使用场景: Stegdetect识 别出来是F5加密的图片或题目提示是F5加密的图片
进入F5-steganography_F5目录,将图片文件拷贝至该目录下,从CMD进入该目录

格式: Java Exrtact 要解密的文件名 -p 密码

image-20200814222330464

9.二维码处理

1.使用二维码扫描工具CQR.exe打开图片, 找到内容字段

image-20200814222536728

2.如果二维码某个定位角被覆盖了,该工具有时候也可以自动识别,如果识别失败,需要使用PS或画图工具将另外几个角的定位符移动到相应的位置,补全二维码 。

image-20200814222556491

3.如果某个二维码的定位点中间是白色,可能被反色了,使用画图工具把颜色反色回来再扫描即可。

image-20200814222734412

压缩文件处理、分析

 

1.伪加密

如果压缩文件是加密的,或文件头正常但解压缩错误,首先尝试文件是否为伪加密。zip文件是否加密是通过标识符来显示的,在每个文件的文件目录字段有一位专门标识了文件是否加密,将其设置为00表示该文件未加密,如果成功解压则表示文件为伪加密,如果解压出错说明文件为真加密。
使用场景:伪加密文件
操作方法:使用winhex打开压缩文件, 找到文件头第九第十个字符,将其修改为0000。
1.使用winhex打开文件搜索16进制504B0102,可以看到每个加密文件的文件头字段。

2.从50开始计算,第九第十个字符为加密字段,将其设置为0000即可变成无加密状态。

image-20200815100029614

3.RAR文件由于有头部校验,使用伪加密时打开文件会出现报错,使用winhex修改标志位后如报错消失且正常解压缩,说明是伪加密。使用winhex打开RAR文件,找到第24个字节,该字节尾数为4表示加密,0表示无加密,将尾数改为0即可破解伪加密。

image-20200815100102794

2.暴力破解

通常我们可以使用ARCHPR.exe工具来破解zip文件
使用场景: windows下加密过的zip文件
1、攻击类型选择暴力破解,在范围位置根据提示选择暴力破解范围选项设置暴力破解包含的类型、开始于和结束于选项具体范围,如果没有定义则全范围暴力破解。点击打开选择要破解的文件,点击开始进行破解。建议使用1~9位的数字密码,以及系统自带的英文字典作为密码字典。

image-20200815100658302

2、攻击类型选择掩码可以进行复杂的暴力破解,比如知道密码前3位是abc,后3位为数字,则在攻击类型选择掩码,在掩码处输入acb???,暴力范围选项选择所有数字,打开要破解的点击,点击破解。此时???的部分会被我们选择的暴力破解范围中的字符代替。

image-20200815101216432

3.明文攻击

明文攻击指知道加密的ZIP中部分文件的明文内容,利用这些内容推测出密钥并解密ZIP文件的攻击方法,相比于暴力破解,这种方法在破解密码较为复杂的压缩包时效率更高。
使用场景:已知加密的zip部分文件明文内容
例:假设一个加密的压缩包中有两个文件readme.txt和flag.txt,其中flag txt的内容是我们希望知道的内容,而我们拥有readme.txt的明文文件,使用上述两个文件即可进行明文攻击。
操作:
1、将readme.txt的明文文件进行压缩,变成readme1.zip。
2、打开archpr, 攻击类型选择明文,明文文件路径选择readme1.zip ( 即将明文文件不加密压缩后的文件),加密的文件
选择要破解的文件,点击开始,破解成功后会获得密码。

image-20200815101420010

有时不一定能破解出文件口令,但是能够找到加密密钥等信息,可以直接将文件解密,点击确定保存解密后的文件即可。

image-20200815101531195

使用该方法需要注意两个关键点:
1、有一个明文文件,压缩后CRC值与加密压缩包中的文件一致。
2、明文文件的压缩算法需要与加密压缩文件的压缩算法一致。

image-20200815101728691

image-20200815101917724

RAR文件格式
有时候给出的RAR文件的头部各个字块会故意给错导致无法识别。

image-20200815102407082

流量取证技术

 

流量包文件分析

CTF比赛中,流量包的取证分析是另一项重要的考察方向。
通常比赛中会提供一个包含流量数据的PCAP文件,有时候也会需要选手们先进行修复或重构传输文件后,再进行分析。
总体把握
·协议分级
·端点统计
过滤筛选
·过滤语法
·Host,Protocol,contains,特征值
发现异常
·特殊字符串
·协议某字段
·flag位于服务器中
数据提取
·字符串取
·文件提取
总的来说比赛中的流量分析可以概括为以下三个方向:
·流量包修复
·协议分析
·数据提取

WireShark工具的基本使用

wireshark的过滤器和过滤规则能够帮助我们迅速定位到要分析的报文。

image-20200815111017139

常用的过滤命令:

1.过滤IP,如源IP或者目标x.x.x.x

ip.src eq x.x.x.x or ip.dst eq x.x.x.x 或者ip.addr eq x.x.x.x

2.过滤端口

tcp.port eq 80 or udp.port eq 80
tcp. dstport == 80 只显tcp协议的目标端口为80
tcp. srcport == 80 只显tcp协议的源端口为80
tcp.port >= 1 and tcp.port <= 80

3.过滤协议

tcp/udp/ arp/ icmp/http/ ftp/dns/ip

4.过滤MAC

eth.dst == A0:00:00:04:C5:84过滤目标mac

5.包长度过滤

udp. length = == 26这个长度是指udp本身固定长度8加上udp下面那块数据包之和。
tcp.len>= 7指的是ip数据包(tcp下面那块数据),不包括tcp本身
ip.len == 94 除了以太网头固定长度14,其它都算是ip.len,即从ip本身到最后
frame.len == 119整个数据包长度,从eth开始到最后

6.http模式过滤

复制代码

http.request.method == "GET"
http.request.method == "POST"
http.request.uri == "/img/logo-edu.gif"
http contains "GET"
http contains "HTTP/1."
http.request.method == "GET" && http contains "User-Agent:"
http contains "flag"
http contains "key"
tcp contains "flag"

复制代码

WireShark 协议分析

了解数据包传输的内容

image-20200815112209571
根据数据包特征进行筛选
比如查看数据包的时候,有的数据包有某种特征,比如有http(80)。就可以筛选出这种特征出来。
右键→作为过滤器应用→选中

image-20200815112908207

WireShark流汇聚

在关注的ttp数据包或tcp数据包中选择流汇聚,可以将HTTP流或TCP流汇 聚或还原成数据,在弹出的框中可以看到数据内容。

image-20200815113039561

常见的HTTP流关键内容:
1、HTML中直接包含重要信息。
2、上传或下载文件内容,通常包含文件名、hash值等关键信息,常用POST请求上传。
3、一句话木马,POST请求,内容包含eval,内容使用base64加密

image-20200815113342472

WireShark数据提取

1.使用wireshark可以自动提取通过htp传输的文件内容。

image-20200815114452375

  1. wireshark可以手动提取文件内容。
    点击想要的数据包,如下图选定media type的位置
    右键→导出分组字节流或者点击菜单栏文件→导出分组字节流,快捷方式Ctrl+H在弹出的框中将文件保存成二二进制文件。

image-20200815115132169

无线流量包跑密码

无线wif流量包

image-20200815160513990

aircrack-ng工具进行wifi密码破解

1.用aircrack-ng检查cap包:aircrack-ng xxx.cap

image-20200815161110145

2.用aircrack-ng跑字典进行握手包破解: aircrack-ng xx.cap -w pass.txt

image-20200815161440967

USB流量包文件分析

USB流量

USB,流量也是流量分析题的考查点,一 般考察的流量涉及键盘击键,鼠标移动与点击,存储设备的明文传输通信,USB无线网卡网络传输内容等。
USB协议的数据部分在Leftover Capture Data域之中。
右键leftover capture data->应用为列。

image-20200815162159555

image-20200815162650531

USB鼠标流量抓取分析

鼠标流量与键盘流量不同,鼠标移动时表现为连续性,与键盘的离散性不一样。但是实际鼠标产生的数据是离散的。所以同样可以把数据抓取出来,构成二维坐标画出轨迹。

鼠标数据包的数据长度为4个字节,第一个字节代表按键, 当取oxoo时,代表没有按键;为ox01时,代表按左键,为0x02时, 代表当前按键为右键。

image-20200815162724645

第二个字节代表左右偏移;
当值为正时,代表右移多少像素。当值为负时,代表左移多少像素。同理,第三个字节代表上下偏移 。

USB鼠标流量抓取分析
鼠标流量与键盘流量不同,鼠标移动时表现为连续性,与键盘的离散性不一样。但是实际鼠标产生的数据是离散的。所以同样可以把数据抓取出来,构成二维坐标画出轨迹。

image-20200815162845733

标签:文件,隐写,加密,winhex,MISC,CTF,使用,杂项,图片
From: https://blog.csdn.net/m0_74077634/article/details/142100568

相关文章

  • CTF - Python 沙箱绕过与任意命令执行技巧
    这些是一些绕过Python沙箱保护并执行任意命令的技巧。命令执行库首先,您需要知道是否可以直接使用已导入的某些库执行代码,或者是否可以导入以下这些库:os.system("ls")os.popen("ls").read()commands.getstatusoutput("ls")commands.getoutput("ls")commands.getsta......
  • 2024basectf[week3]
    1、复读机这题页面是一个之后在网络中可以看到这个网页的处理器是python而且flag中还有类似于{}这样的字眼,而且还是python处理的,所以就想到了ssti果然,出现了waf,所以基本上就是这个思路+-*/.{{}}__:"\这些好像都被过滤了,还有一些关键字也被过滤了,可以在关键......
  • CTF入门教程(非常详细)从零基础入门到竞赛,看这一篇就够了!
       一、CTF简介CTF(CaptureTheFlag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,已经成为全球范围网络安全圈流行的......
  • CTF入门教程(非常详细)从零基础入门到竞赛,看这一篇就够了!
       一、CTF简介CTF(CaptureTheFlag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,已经成为全球范围网络安全圈流行的......
  • BaseCTF2024-week3-Crypto部分题目wp
    先放一下官方的wp(我这里只放我出的题):https://j0zr0js7k7j.feishu.cn/wiki/XN3BwnHrZihQ3ZkhEyocb5EJnUd没有n啊fromCrypto.Util.numberimport*importgmpy2flag=b'BaseCTF{}'m=bytes_to_long(flag)p=getPrime(512)q=getPrime(512)n=p*qe=65537phi=(p-1)*(q-1)d......
  • 2024年“羊城杯”粤港澳大湾区网络安全大赛Misc 部分解析
    2024年“羊城杯”粤港澳大湾区网络安全大赛Misc部分解析前言:Misc-不一样的数据库_2:Misc-hiden:Misc-miaoro:Misc-so_much:前言:本次解析是后期复现当时没时间打用于交流学习,感谢支持!![X]......
  • [BUUCTF 2018]Online Tool 1
    <?phpif(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){$_SERVER['REMOTE_ADDR']=$_SERVER['HTTP_X_FORWARDED_FOR'];}if(!isset($_GET['host'])){highlight_file(__FILE__);}else{$host=$_GET['......
  • CTF逆向:将数组作为函数代码执行
    例题攻防世界BABYREflag判定条件为这个if(v5==14&&(*judge)(s))注意judge本质上是一个数组,(*judge)(s)则说明judge数组中的内容被当做代码执行但前面又有for(i=0;i<=181;++i)judge[i]^=0xCu;judge数组中的内容进行加密所以需要进行patch......
  • CTF入门教程(非常详细)从零基础入门到竞赛,看这一篇就够了!
       一、CTF简介CTF(CaptureTheFlag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,已经成为全球范围网络安全圈流行的......
  • n00bzCTF 2024
    n00bzCTF2024Passwordless给了源码#!/usr/bin/envpython3fromflaskimportFlask,request,redirect,render_template,render_template_stringimportsubprocessimporturllibimportuuidgloballeetapp=Flask(__name__)flag=open('/flag.txt').re......