前言
大半年的时间,把攻防世界上的Misc题目刷的差不多了,Misc类型的题目有知识点,有常见套路,也有脑洞大开,很是活跃思维,很好的锻炼思维.把遇到的一些常见题目用到的知识点和技巧做了下总结,后续会不断保持更新.
各种编码
Misc常见题型是各种编码,常常是一层编码套另一层编码.常见的可以用ciphey工具进行解码
1
ciphey -t 'SGVsbG8gbXkgbmFtZSBpcyBiZWUgYW5kIEkgbGlrZSBkb2cgYW5kIGFwcGxlIGFuZCB0cmVl'
1.摩斯电码缩写
摩斯电码中存在一些常用的缩写,VY代表VERY,GUD代表GOOD
2.PT2242信号
前面4bit表示同步码,中间的20bit表示地址码,后面的4bit表示功能码,最后一位是停止码
1
2
3
0 01110100101010100110 0010 0
flag就是地址码sctf{01110100101010100110}
3.Tab、空格
tab替换为1,空格替换为0,得到一串二进制数,将该串字符以7位为1组分组,前面加0,转为10进制,再转为ASCII码,得到flag
4.维吉尼亚加密爆破
不知道维吉尼亚密码,在线爆破: https://guballa.de/vigenere-solver
5.异或
有的时候对某些字符进行了异或操作,但是并不知道key.一般明文以flag或者ctf开头(不固定,具体题目具体分析),以某段开头的字符串计算出key,再全部异或.
6.偏移
例如: 题目是一串字符,每两个分组十六进制,转成十进制后-128(偏移量为128),再转成ascii码得到flag
7.编码转换
例如: 16进制的字符串转换为ASCII码、8进制转10进制再转ASCII码
8.关键字密码
有道题解密后得到PVSF{vVckHejqBOVX9C1c13GFfkHJrjIQeMwf},可以看出这个应该就是flag的变形,采用了置换加密.因为密文VSF的间隔与CTF对不上,所以应该是采用的有密码的置换加密.因为题目和提示是keyword,所以想到是Nihilist 密码(又称关键字密码),直接找个在线解密网站解密一下.得到flag
https://www.qqxiuzi.cn/bianma/uuencode.php
流量包
1.关键字符串
根据分组详情,直接搜索flag、ctf等关键字符
2.文件分离
可以用foremost直接分离流量包中的文件,如图片、zip文件等
3.TTL隐写
IP数据报的TTL(Time To Live)字段有8bit,可以表示0-255的范围,IP数据报每经过一个路由器,TTL字段就会减1,当TTL减为0的时候,该报文就会被丢弃,但是在大多数情况下通常只需要经过很小的跳数就能完成报文的转发, 远远比上限255小得多,所以我们可以用TTL值的前两位来进行传输隐藏数据.
4.键鼠流量
每一个数据包的数据区有四个字节,第一个字节代表按键,当取 0x00 时,代表没有按键、为 0x01 时,代表按左键,为 0x02 时,代表当前按键为右键.第二个字节可以看成是一个 signed byte 类型,其最高位为符号位,当这个值为正时,代表鼠标水平右移多少像素,为负时,代表水平左移多少像素.第三个字节与第二字节类似,代表垂直上下移动的偏移.
有时候也需要通过分析流量,确定数据位置,比如有道题目发现data数据为8字节,4字节为鼠标流量,8字节为键盘流量.运行下面的命令提取数据:
1
tshark -r 12.pcapng -T fields -e usb.capdata > out.txt
用https://github.com/WangYihang/UsbKeyboardDataHacker
5.文件修复
wireshark打开pcapng,提示文件错误,在线修复: http://f00l.de/hacking/pcapfix.php
6.协议分析
HTTP: tshark提取相关数据
1
tshark -r 4d7c14206a5c4b74a0af595992bbf439.pcapng -T fields -e http.request.uri | grep flag > data.txt
HTTPS: 导入证书,解密流量.
WIFI: aircrack跑出来密码,在wireshark中Edit->Preferences->Protocols ->IEEE802.11->Edit以key:SSID形式填入即可解密wifi包看到明文流量
1
2
aircrack-ng cacosmia.cap -w TOP300.txt
airdecap-ng cacosmia.cap -e mamawoxiangwantiequan -p 12345678
DNS: 提取dns域名信息
1
2
3
4
tshark -r dnscap.pcap -T fields -e dns.qry.name > hex
使用tshark提取A记录的域名
tshark -Y "ip.dst==8.8.8.8 && dns.qry.type == 1" -r tunnel.pcap | awk '{print $(NF)}' | awk -F '.' '{print $1}' > b64.txt
1
2
3
4
5
6
7
8
9
10
11
12
import re
find = ""
with open('hex','rb') as f:
for i in f:
text = re.findall(r'([\w\.]+)\.skull',i)
if text:
find += text[0].replace('.','')
print(find)
ICMP: icmp只有heiheihei!!和不定长的aaa,判断是icmp包在长度上有问题,tshark提取出相应的长度,看着像是ascii码,发现是乱码,那可能是需要偏移下,爆破得到flag.
1
tshark -r d0a836756fbb48509f0f51f1f5d4dca4.pcapng -Y "icmp" -T fields -e frame.len | tr "\n" ","
7.端口信息
端口在隐藏信息
1
tshark -r hidden-message.pcap -Tfields -e udp.srcport | while read port; do echo -n ${port: -1}; done | tr 01 10 | perl -lpe '$_=pack"B*",$_' Heisenberg
8.kindle
kindle传输数据的流量包,使用工具kindletool(https://github.com/NiLuJe/KindleTool)
1
kindletool dm usb_sniff.pcap out
图片
1.查找关键字符
首先是直接用string进行查找关键字符,如flag、ctf等来找到flag.
1
2
string flag.png | grep flag
string flag.png | grep ctf
2.Exif信息隐藏
1
exiftool flag.png
3.Gif隐写
GIF图片用Stegsolve一帧一帧的查看,往往答案就隐藏在其中一帧.也可以用convert进行分离.有的时候还需要把分离得到的多个图片合成1张图片.也可以用https://tu.sioe.cn/gj/fenjie/ 分解
1
2
3
convert flag.gif flag.png
montage flag*.png -tile x1 -geometry +0+0 flag.png
4.GIF帧持续时间隐写
1
identify -format "%T \n" 'file.gif'
5.文件分离
直接查看关键字符和exif信息等失败后,第一个要考虑的往往是binwalk + foremost组合(或者binwalk + binwalk -e),用来看下有没有隐藏文件.
foremost、binwalk -e都分离不出来时用dd或者010 Editor来保存要分离的数据.
6.文件头(尾)修复
有的时候得到的文件是损坏的,常常是缺少图片头(尾).常见的图片格式文件头(尾)如下:
文件类型 | 文件头 | 文件尾 |
---|---|---|
JPEG(jpg) | FFD8FF | FFD9 |
PNG(png) | 89504E47 | AE426082 |
GIF(gif) | 47494638 | 003B |
BMP | 424DC001 |
用010 Editor打开文件,在文件头补上文件头即可.
7.宽高修复
对于PNG格式的图片,常见的是CRC值和宽高不匹配,这时的图片看起来是不完整的,只有一部分,爆破下就可以了
JPG格式的图片也存在宽高修复问题
8.LSB隐写
常遇到题目中隐写了各种数据,可以用Stegsolve来导出隐写的数据,zsteg更方便些,推荐使用zsteg.
1
2
3
zsteg -E "extradata:0" maomao1.png > 1.png
zsteg -e b1,rgb,lsb,xy a > a.zip
zsteg flag.png
9.对于两张相同图片的隐写
有些题目往往给出了2张相同的图片,这种情况下,常常是盲水印或者异或.
盲水印使用https://github.com/chishaxie/BlindWaterMark
异或用Stegsolve或者使用python脚本来处理
10.二维码
得到一张二维码图片时,如果二维码的三个定位点是白色的时候,就说明需要进行反色操作了
具体操作可以用windows自带的画图工具,打开图片然后点击主页的选择,选中图片
11.JPG隐写
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
steghide embed -cf [图片或wav文件载体] -ef [待隐藏文件]
steghide embed -cf 1.jpg -ef 1.txt
查看图片中嵌入的文件信息
steghide info 1.jpg
提取图片中隐藏的文件
steghide extract -sf 1.jpg
stegdetect(可检测通过JSteg,JPHide,OutGuess,Invisible,F5,oppendX,Camouflage等隐写工具隐藏的信息)
outguess -r 035bfaa85410429495786d8ea6ecd296.jpg 1.txt直接获取到flag.
stegdetect xxx.jpg
stegdetect -s 敏感度 xxx.jpgexi
stegbreak(爆破密码)
stegbreak.exe -r rules.ini -f password.txt p -c hide.jpg
12.IDAT隐写
1
2
3
使用pngcheck分析 pngcheck.exe -v file
判断异常IDAT串,使用winhex等工具创建新文件
根据创建后的新文件继续分析
13.数据逆序
这种题目用010 Editor打开会发现所有的字节顺序是完全反过来的,写脚本反过来就好.
14.像素点合成
将文本文件转换为图像的最可以将其转换为PPM格式,在线网站: https://convertio.co/zh/txt-ppm/
1
convert -flip -rotate 90 flag.ppm flag.png
15.bmp转二维码
下来一个bmp文件,用stegsolve分析无果,但是通过观察发现是RGB的通道有问题,利用的是图片中最低位的奇偶性.实验吧原题直接用画图另存为png格式,用StegSolve打开后,调到RGB红色位置.这里有所变化,转QR Code,即二维码(Quick Response Code)
1
2
3
4
5
6
7
8
9
10
11
12
13
## lsb隐写
import PIL.Image as Image
img = Image.open('low.bmp')
img_tmp = img.copy()
pix = img_tmp.load()
width,height = img_tmp.size
for w in range(width):
for h in range(height):
if pix[w,h]&1 == 0:
pix[w,h] = 0
else:
pix[w,h] = 255
img_tmp.show()
16.二进制作二维码
有一堆数独图片,把有数字的记为1,没有数字的记为0,结果保存在txt文本中.也可以调节文件位置后用画图拼接,并将有数字的格涂黑.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
from PIL import Image
x = 45
y = 45
im = Image.new("RGB", (x, y)) ## 创建图片
file = open('1.txt', 'r') ## 打开rbg值文件
for i in range(0, x):
line = file.readline() ## 获取一行
for j in range(0, y):
if line[j] == '0':
im.putpixel((i, j), (255, 255, 255)) ## rgb转化为像素
else:
im.putpixel((i, j), (0, 0, 0)) ## rgb转化为像素
im.show()
17.图片属性
查看图片的属性,发现修改时间不太正常,提取修改时间,转换为纳秒,然后取余限制64位,再提取1-129和40-99之间的数字,最后转换为字符串,得到flag
18.Oursecret隐写
示例: 使用Oursecret这个工具用密码0405111218192526(图片中标绿部分)得到一个try.zip的压缩包
19.图片合并
示例:用stegsolve analyse images combine两张图片,保存新图片,然后stegsolve打开新图片左右切换通道一次就得到二维码,扫描二维码得到flag
20.GPS流
PS数据流,先在地图上画出来看看,https://www.gpsvisualizer.com/map_input,在这个网站把文件导进去,点击画图画出来之后把图片翻转90度之后得到flag
21.图片垂直反转
用画图垂直反转图片或者用python脚本获取flag.
1
2
3
4
5
6
7
from PIL import Image
def flip_vertical(image_path, output_path):
with Image.open(image_path) as image:
flipped_image = image.transpose(method=Image.FLIP_LEFT_RIGHT)
flipped_image.save(output_path)
flip_vertical('021b62817d7f439aab5338ea63fe1b4b.jpg', 'result.jpg')
22.批量扫描二维码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from PIL import Image
import pyzbar.pyzbar as pyzbar
filepath = 'a5d744fb06e04bacfde2e7b713054145\\list'
count = 1
data = '7ab7df3f4425f4c446ea4e5398da8847'
try:
while True:
path = "{}\\{}".format(filepath, data + '.png')
img = Image.open(path)
result = str(pyzbar.decode(img)[0].data.decode())
data = result.split(' ')[5].replace("'", '')
print(count, result, data)
count += 1
except Exception:
print("找到了")
exit()
## goo.gl这个服务器已经关掉了,所以这里直接给flag,看的韩国老外博客知道的flag
## 3DS{I_h0p3_th4t_Y0u_d1d_n0t_h4v3_ch4ck3d_OnE_by_0n3}
音频
1.频谱
音频文件最简单的隐写解法就是用Audacity打开音频,查看频谱图等信息
2.MP3Stego
如果mp3文件听上去没有什么奇怪的地方,那么就试试用这个工具.教程:https://blog.csdn.net/myloveprogrmming/article/details/52641916
用这个工具会输入密码,有时候题目没有特别提示就可以试试弱口令,有时候甚至就是题目名字.
3.LSB音频隐写
常常是wav文件隐写,用silenteye即可.
4.波形
通常来说,波形方向的题,在观察到异常后,使用相关软件(AUDACITY,ADOBE AUDITION)观察波形规律,将波形进一步转化为01字符串等,从而提取转化出最终的flag.一般高的为1,低的为0.
5.DTMF
DTMF,双音多频,现在电话拨号机制,每个电话按键都有不同的声音,特点就是电话按键声音
在线网站: http://dialabc.com/sound/detect/
6.DeepSound
直接提取文件即可.
7.mmsstv
用mmsstv并播放,可以得到一张图片
8.摩斯编码
wav文件,播放后有点像莫斯编码,在线提取信息.
https://morsecode.world/international/decoder/audio-decoder-adaptive.html
9.mp3逆序
把整个mp3反转下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
pip install pydub
pip install pyaudio
from pydub import AudioSegment
from pydub.playback import play
#读取想要倒放的音频文件
ted = AudioSegment.from_file("nanjing_1.mp3")
#将音频倒转
backwards = ted.reverse()
#保存倒放的音频
backwards.export("nanjing_2.mp3")
#播放倒放文件
play(backwards)
10.MATLAB
用Audacity打开就是一段稀奇古怪的音频信号,仔细观察,发现不同段落其幅值有明显差异,应该是调幅了,MATLAB导入wav文件看数据,发现大概是以64个点为周期,那么取幅值高的为1,幅值低的为0.
11.无线电
multimon-ng是一个专门解码aprs、psk等业余无线电数字通信协议的工具
在使用multimon-ng前,需要先用sox把wav转为raw
1
2
sox -t wav 997a0b28705f4ef086acfb7e1b932336 -esigned-integer -b16 -r 22050 -t raw latlong.raw
multimon-ng -t raw -a AFSK1200 latlong.raw
12.private bit
例如: 一个mp3文件,用foremost分离出一个图片,图片没啥信息.用010 Editor打开mp3,发现private bit的数值的在0和1中变化,用脚本提取private bit信息得到flag.其实copyright也是在0和1中替换,多试几次得到flag
视频
1.ffmpeg
一般在题目中会插入一些图片,由于一下就闪过了所以需要用这个工具按帧提取出来,简单的题目往往这样就能做出来了.
2.mkv
mkv文件,下载MKVToolnix程序,打开文件,播放视频可发现视频有多个音轨,并且两个音轨声音相似,所以首先需要将音频提取出来,这里使用MKVToolnixPortable工具进行提取
文档
1.word颜色隐写
由于一般word文档都是白色为底色,所以如果文本字体设置的是白色,就看不出来有东西,这个时候可以试试ctrl+a,全选文字,再把颜色改成其他颜色,就能看出来被隐藏的文字了
2.word个人信息隐写
对于一个Word文件,在信息标签页下可以看到关于这个文档的各种属性
3.word隐藏文字选项
在文本出右键鼠标,字体选项中有一处隐藏文字选项,取消勾选后被隐藏的文字就出现了
4.docx修改后缀
包含xml文件的zip压缩包,flag可能隐藏文件,信息在压缩包里,在word中看不到,可以将docx后缀改为zip
5.pdf隐写
wbs43open(可用于PDF、bmp等文件的隐写)
wbStego,https://www.bailer.at/wbstego/, 其实不只是PDF文件,wbStego算法支持把文件隐藏到BMP、TXT、HTM和PDF文件中,而CTF赛事中更常用于对BMP或者PDF文件隐写,原理:首先,wbStego会把待插入数据的每一个ASCII码转换为二进制形式;然后,把每一个二进制数字再替换为0x20或0x09,0x20代表0,0x09代表1;最后,按字节搜索PDF文件,在PDF文档的两个间接对象的字节之间,将这些十六进制数据嵌入到PDF文件中.所以用wbStego修改后的文件内容,会发现文件中已混入了很多由0x20和0x09组成的字节.判断:文件中有很多由0x20和0x09组成长度为8B的字节块,且这些字节块位于两个间接对象之间
有的pdf文件,在linux下打开直接看到flag,在windows上不行,会有图片隔着,可以是用金山pdf编辑图片来查看
得到一个pdf文件,根据题目描述说图片下面什么都没有,说明flag就在图片下.猜测flag值在图片底下,wps将pdf转为word格式后,将图片移走发现flag.
6.html隐写
snow隐写,需要告诉key,解密网站http://fog.misty.com/perry/ccs/snow/snow/snow.html
在网页结束标记</HTML>后每行的行尾插入空格或Tab键隐藏信息,例如插入一个空格代表隐藏0,插入一个Tab代表隐藏1.
修改标记名称的大小写来隐藏信息.如用大写标记名称<HTML>代表1,以小写的标记名称<html>代表0.这样,一个标记名称可隐藏1bit信息,具有较好的隐蔽性和抗攻击性,但隐藏容量较小.
修改属性值字符串的大小写来隐藏信息.如用属性字母的大写代表隐藏1,小写代表隐藏0.
用属性值的单引号、双引号或者不使用引号隐藏信息,如用双引号代表1,单引号代表0.
用具有两种等价格式的单标记来隐藏信息.如标记<BR>价于<BR/>,可用<BR>代表隐藏1,<BR/>代表隐藏0,类似的标记还有<HR>等价于<HR/>,<IMG>等价于等.这样的一个标记可隐藏1bit信息.
在符号“>”的左边插入空格来隐藏信息.如,用“>”左边有空格代表1,无空格代表0.
调整标记名称和标记属性之间的空格或标记属性之间的空格数来隐藏信息.如,用多个空格代表1,1个空格代表0.因此一个HTML标记有n个属性,则一个标记能隐藏n个bit的信息.
利用标记中属性赋值号“=”左右添加空格来隐藏信息.以左右都无空格表示00,左无右有空格表示01,左有右无空格表示10,左右均有空格表示11,则一个属性赋值可隐藏2bit信息.
利用属性左引号后添加空格和右引号前添加空格来隐藏信息.以空格代表1,无空格代表0.则,一结属性值引号可隐藏2bit信息.
利用有些标记的结束标记可以省略来隐藏信息.如:<P>(抱页标记)、<L1>(清单项目标记)、<TD>(表格单元格标记)、<DT>(定义条目标记)、<DD>(定义内容标记)、<Form>、<Input>等.则一结这样的标记可隐藏1bit信息.
7.pyc隐写
https://github.com/AngelKitty/stegosaurus
8.可执行文件隐写
还没遇到过,总结时,在网上文章遇到过
Hydan,http://www.crazyboy.com/hydan/ (已打不开)
Hydan是可以在32位ELF二进制文件里隐藏信息的工具,主要原理是利用了i386指令中的冗余信息,它利用二进制代码的逆向工程技术来判断在可执行文件中隐藏数据段的最佳位置.这个过程中还使用了一个x86反编译库:Mammon’s Libdisasm.但可执行文件中可以用来隐藏数据的空间很小,一个JPEG图像文件中每17个字节中可以隐藏一个字节数据,而二进制文件(可执行文件)中每150字节的代码才可以隐藏一个字节.
9.linux光盘文件(ext3)
linux挂载光盘,使用notepad或者strings、file命令来搜索关键词
1
2
strings test | grep -i flag
find | grep 'flag' 或 find -name 'flag*'
10.swf文件
PotPlayer打开后一帧一帧的查看
11.vmdk文件
用AccessData FTK Imager打开,左上角文件->Add…->选择映像文件->下一页->文件路径,加载后发现有4个flag文件,点击文件后把下面的2进制数据鼠标选中->右键->复制十六进制文本,最后把得到的所有2进制数据转换为ASCII码得到flag
12.UBIfs镜像
用ubi_reader工具进行挂载
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1、安装依赖:
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gztar -xvzflzo-2.10.tar.gz
cd lzo-2.10
mkdir build
cd build
cmake ..
make -j4
make install
2、安装python依赖
pip3 install python-lzo
pip3 install ubi reader
3、挂载
for i in ls *bin; do ubireader_extract_files $i -o extracted_$i; done.
发现生成四个文件夹,一个个点进去看,在extracted_image3.bin中(extracted_image3.bin/video/usb/)发现了一个视频文件,点开后发现flag
13.logicdata
下载附件得到一个.logicdata(逻辑分析仪数据文件),使用Logic软件打开,根据时钟频率以及通讯方式擦侧是属于SPI通讯,解析得到flag
14.时间戳
例题: 下载附件得到一个zip文件,解压(必须用winrar解压,windows自带的解压会修改文件的修改时间)得到好多个txt文本,有5个文本不是空的,剩下的都是空.题目给了一个时间,2033-05-18 11:33:20,把这些文件与这个时间进行相减(需要转为时间戳),得到的字符转换为ascii得到flag.
1
2
3
4
5
6
7
8
9
10
11
12
import os
oldtime = 2000000000
flag = ""
for i in range(0, 47): #有0~46个txt文件 就是循环47次
file = "stego/{0}.txt".format(i) #调用文件路径 记得复制自己的文件路径 不要搬用我的
newtime = int(os.path.getmtime(file)) #获取最近修改的时间
s = newtime - oldtime
flag = flag + chr(s)
print(flag)
其他隐写
1.base64隐写
有些编码也会有隐写,比如base64隐写,在Misc和Crypto中都遇到过,用python脚本解码即可.
2.NTFS数据流
NTFS文件系统中存在NTFS数据流文件也被称为Alternate data streams (ADS),是NTFS磁盘格式得一个特性之一.每个文件都有主文件流和非主文件流,主文件流能够直接看到;而非主文件流寄宿于主文件中,无法直接读取,这个非主文件流就是NTFS交换数据流. 也就是说非主文件是真实存在于的,但是看不到,可以通过创建这样的数据交换流文件,达到隐写得效果
用7zip打开压缩包,可以看到隐藏的文件.
打开cmd,通过执行dir /r就能看到是否有ntfs流隐写.
1
2
3
4
5
6
7
8
9
10
示例:
解压后得到一个txt和jpg文件,txt文件里有提示,jpg文件后面隐藏了1.txt,因题目有问题,看不到,这是NTFS交换数据流隐写,用下面的命令读取即可
notepad.exe 1.jpg:1.txt
其他类似命令有:
T:\Winwar\WinRAR.exe(根据实际的WinRAR安装路径进行修改) Misc150.txt:Flag.zip
notepad.exe test.txt:hidden.txt
mspaint.exe test.txt:hidden.jpg
3.零宽字符隐写
参考: https://zhuanlan.zhihu.com/p/87919817
在线解码(需要多个网站都试试)
1
2
3
https://330k.github.io/misc_tools/unicode_steganography.html
http://www.atoolbox.net/Tool.php?Id=829
https://yuanfux.github.io/zero-width-web/
例题: 下载附件得到一个pdf文件,在浏览器(EDGE,谷歌和火狐都不行)中打开它,然后全选pdf内容复制到txt文档中,发现内容中有一串AAABBB的字符.PDF文件里提示有莫斯编码(find mr.morse text), 接下来我们把’A’换成’.’,把’B’换成’-‘
4.词频统计隐写
出题人会提供给我们大段的文章,重要信息隐藏在该文章的字母频率中
在线网站: https://quipqiup.com/
5.爆破异或key
有的文件是被异或过的,但是并不知道所用到的keu,此时就可以用xortool爆破.
1
xortool badd3e0621ff43de8cf802545bbd3ed0 -c 20
-c表示出现频率最高的字符,这个需要根据经验,比如文本内容一般是空格(20),二进制文件一般是00.尝试出了key:GoodLuckToYou,对原文件进行异或得到flag
压缩包
1.头部(尾部)信息缺失
缺少头部、尾部信息,无法解压.
文件类型 | 文件头 | 文件尾 |
---|---|---|
ZIP Archive (zip) | 504B0304 | FFD9 |
RAR Archive (rar) | 504B |
2.数据逆序
这种题目用010 Editor打开会发现所有的字节顺序是完全反过来的,写脚本反过来就好.
3.弱口令爆破
用ARCHPR爆破
4.CRC暴破
有一类题目是我们需要知道加密后的压缩文件中的内容,但是压缩文件的密码我们不知道,直接暴破密码也不是很现实,但是当文件的大小比较小,或者字符数量较少,这个时候就可以构造一个和源文件等长的字符串,然后再对其进行CRC校验,比较校验码是否相同以此来暴破出压缩文件内部文件的内容.
https://github.com/theonlypwner/crc32
5.明文攻击
压缩包是加密的,知道一个加密压缩包内某个文件的内容的时候,就可以利用明文攻击迅速有效找出keys,从而破解这个压缩包.
用ARCHPR即可.
6.ZIP伪加密
1
2
3
4
5
6
7
8
9
10
11
无加密
压缩源文件数据区的全局加密通常为00 00 (50 4B 03 04两个字节之后)
压缩源文件目录区的全局方式位标记通常为00 00 (50 4B 01 02四个字节之后)
伪加密:
压缩源文件数据区的全局加密为00 00
压缩源文件目录区的全局方式位标记为09 00(不一定是9,也可能被篡改成其他奇数)
真加密:
压缩源文件数据区的全局加密通常为09 00
压缩源文件目录区的全局方式位标记通常为09 00
可以使用winrar文件的修复功能、010 Editor修改标志位、binwalk -e等来破解伪加密.
7.RAR伪加密
这时压缩包肯定是损坏的,010 Editor打开后修改加密标志位为0即可.
8.GIT隐藏
zip文件,解压后里面有个flag.txt,但是flag.txt里面没有flag.解压zip文件时发现存在隐藏目录.git,查看提交历史,恢复之前的文件,得到一个s.py文件,运行得到flag.
1
2
3
4
tar -xjvf d02f31b893164d56b7a8e5edb47d9be5
git stash list
git stash show
git stash apply
总结
简单的题目会用到其中的1个或者2个知识点,难的题目会使用多个知识点,混合多打常见.其中有些题目目前是没用到的,也没听说过的.
CTF博大精深.