Misc Ultra
写在前面
MISC的学习是极广的,很多都要学习,而记在博客上是最方便有效的方法了,可以随时翻阅
这篇博客会随着我的一点点学习而逐渐被填写,因此不会很快。。
各种文件头尾
1 | .zip的文件头:50 4B 03 04 14 00 08 00 |
加密
思路:
加密的方法有很多,要看是什么加密了
base加密
原理:
Base 编码(Base Encoding)是一种将二进制数据转换为可打印字符的编码方式。常见的 Base 编码有 Base64、Base32 和 Base16 等,它们的工作原理相似,只是使用的字符集和编码方式不同。
基本原理
Base 编码的核心原理是将一串二进制数据(字节)按照一定的规则分组,并将每组数据映射为一个字符。这样可以保证编码后的数据由可打印的字符组成,通常用于在文本格式中传输二进制数据。
以 Base64 为例,下面是其编码原理:
- 输入数据分组:将输入的二进制数据每 3 个字节一组,每个字节 8 位,总共 24 位。
- 划分为 4 组:将这 24 位数据分成 4 组,每组 6 位。例如,输入数据为 3 字节(24 位),经过分组后就变成 4 个 6 位的数据块。
- 字符映射:将每个 6 位的数据块映射到一个字符表。Base64 的字符表包括大小写字母(A-Z、a-z)、数字(0-9)和两个符号(+ 和 /)。总共有 64 个字符,所以叫 Base64。
- 输出结果:输出的是一个由这 64 个字符组成的字符串。如果原始数据的字节数不是 3 的倍数,Base64 编码会使用一个或两个
=
来填充,使得输出的字符数是 4 的倍数。
举个例子
假设我们要对字符串 Hello
进行 Base64 编码:
1 | Hello |
的 ASCII 码为:
1 | 72 101 108 108 111 |
对应的二进制是:
1 | 01001000 01100101 01101100 01101100 01101111 |
将其按 3 字节分组,得到:
1 | 010010000110010101101100 011011000110111101101111 |
每组 24 位拆成 4 组,每组 6 位:
1 | 010010 000110 010101 101100 011011 000110 111101 101111 |
查表映射每 6 位得到对应字符:
1 | H e l l o |
最终输出的 Base64 编码结果为:SGVsbG8=
其他常见的 Base 编码
- Base32:将每 5 个字节转为 8 个字符,使用 32 个字符(A-Z、2-7)。它的特点是比 Base64 更加健壮,对字母区分大小写的要求较低,通常用于限制字符集时(如避免使用特殊字符)。
- Base16(Hex):将每个字节编码为两个十六进制字符,常用于表示十六进制数据。
总结
Base 编码的核心思想是将二进制数据映射为可打印字符,使得原本只能通过二进制传输的数据能够通过文本协议进行传输。不同的 Base 编码有不同的字符集,常见的有 Base64、Base32 和 Base16。
解密的工具
解密的时候要注意是不是换表的base
网站:
cyberchef就可以
工具:
随波逐流
随波逐流支持换表base,多行base
其中有个base64隐写解密甚至可以把解密出来的脚本运行了
puzzlesolver
这个可以补全base32,64隐写
basecrack
先要装好工具
因为我给basecrack单独装了一个虚拟环境,所以运行时候要激活它
切换到目录
1 | cd basecrack |
激活虚拟环境
1 | source venv/bin/activate |
运行
1 | python basecrack.py |
就可以开始解密了。
如果想让他一直解密的话用
1 | python basecrack.py -m |
MD5加密解密
网站
加密网站(适用于让你包上md5提交的): https://www.geekstool.com/tool/md5
凯撒加密
凯撒加密的原理是换位,我们需要注意换位的key会不会变化
如果key会变的话我们需要编写脚本来解密了
如果没有的话直接cyberchef或者随波逐流都可
brainfuck加密
-随波逐流里有
-网站:https://www.splitbrain.org/services/ook
Ook! Obfuscation加密
-网站:https://www.splitbrain.org/services/ook
serpent加密(蛇对称加密算法)
-网站:http://serpent.online-domain-tools.com
颜文字加密(aaencode/jjencode/ppencode/uuencode/xxencode)
-aaencode随波逐流里面有
-其他的可以用在线网站http://www.hiencode.com/
AES-ECB加密
可以用cyberchef
可以用脚本,如下:
1 | import base64 |
奇奇怪怪的加密
有一些奇怪的加密可以尝试去随波逐流找找看
随波逐流/其他工具/更多图形密码(在线)
TXT文本隐写
思路:
看是什么隐写了,是NTFS?还是snow?还是什么
字频统计
有一些txt里面是一堆乱码,实际上是要我们统计字频
可以使用puzzlesolver
看不懂的乱码
诸如
这样实在看不懂的乱码可以试试把txt拖进010,
在010的视图里面选择EBCDIC,说不定能看到。
反转的16进制
有时候遇到打开文本,看到一堆东西,能观察出是反转过的16进制文件(因为发现了文件头)
可以使用puzzlesolver的反转
或者使用脚本反转回来:
1 | with open('E:/python3.7/1.txt', 'r', encoding='utf-8') as file: #记得改路径 |
NTFS交换数据流(简称ADS)
NTFS交换数据流(简称ADS)是NTFS磁盘格式的一个特性,在NTFS文件系统下,每个文件都可以存在多个数据流,除了主文件流之外还可以有许多非主文件流寄宿在主文件流中,而我们无法查看到非主文件数据流,因文件夹大小始终显示0
注意ntfs的压缩包要用WinRAR解压,否则可能解压不出来ntfs流
以下是进行文件流计生和查看的方法,以后在windows命令行下查看文件,都用 dir /r
寄生一:
echo 写入内容>>宿主文件:交换数据流文件(寄生文件)
echo ever>>1.txt:2.txt
2.txt为echo创建出交换数据流文件,ever在2.txt中
寄生二:
type 交换数据流文件(寄生文件)>>宿主文件夹:交换数据流文件(寄生文件)
type 2.txt>>temp:2.txt
temp为空文件夹,执行后2.txt寄生在temp文件夹上
type a.jpg>>temp:a.jpg
temp为空文件夹,执行后a.jpg寄生在temp文件夹上
查看:
notepad 宿主文件:交换数据流文件(寄生文件)
notepad 1.txt:2.txt
查看图片文件:
mspaint 宿主文件:交换数据流文件(寄生文件)
notepad a.jpg:b.jpg
过滤
dir /r | findstr $DATA (过滤DATA字符串)
例题可以看BUUctf的 [SWPU2019]我有一只马里奥
网站讲解: https://zhuanlan.zhihu.com/p/654643812
工具:NtfsStreamsEditor或AlternateStreamView
snow加密
需要密码,当然也可以无密码解密
1 | snow.exe -p password -C encoded.txt |
看不到的情况——sunblime
有时候什么东西都看不到,感觉类似于无字天书。
可以复制进sunblime看看
图片题
思路:
可以先拖进随波逐流看看
没有再010看看有无隐写
实在不行看看文件属性里有没有备注
压缩了宽高
有些题目会压缩图片宽高,我们需要爆破出来,jpg可以乱改宽高,png不行,需要知道原本的宽高。
1.随波逐流把文件拖进去会自己分析,如果压缩了宽高会自己爆破回来,很好用
2.010可以自己修改宽高
png爆破crc脚本
实测这个脚本在宽高比较低的时候好用,超过1000就不好用了,爆破得很慢
1 | #使用python3爆破png图片的宽高数据 |
stegdetect
这个是用来检查图片是什么隐写的
我这里下的是windows版本,对应目录下cmd
1 | stegdetect.exe 图片路径 |
outgruss隐写
1 | outguess -k ‘key’ -r 加密后的图片.jpg -t 明文.txt |
F5-steganography
题目可能会提示关于刷新一类的字眼
装好工具后
1 | cd F5-steganography |
再
1 | java Extract 1.jpg -p 123456 #-p后接f5的key |
有时候报错需要我们加上
1 | --add-opens java.base/sun.security.provider=ALL-UNNAMED |
steghide
直接跑
1 | steghide extract -sf stg.jpg |
stegseek
跑
1 | stegseek --seed example.jpg |
pngcheck——png图像修复
检查png的chunk
1 | pngcheck -v decode.png |
如果检查出来如 invalid chunk name “0000” (30 30 30 30)
就去010把对应的chunk 0000 修改为 IDAT
oursecret隐写
一种隐写方式,需要密码。
binwalk和formost提取
如果有文件隐写在图片里面,可以尝试binwalk和formost提取一下
LSB隐写
stegsolve
lsb是利用人眼看不到的原理在最低位隐写内容
stegsolve可以查看图片的LSB通道,如果是最低位lsb隐写的话可以stegsolve一下
运行stegsolve
1 | java -jar stegsolve.jar |
需要电脑配置好了java环境变量
stegsolve可以看到最低位的一些数据,然后手动save bin,再用010转化
zsteg——无密钥
1 | zsteg -a (文件名) #查看各个通道的lsb |
感觉stegsolve更好用
cloacked-pixel——有密钥
先
1 | cd cloacked-pixel |
再
1 | python2 lsb.py extract encoded.png result.txt 123456 |
最后
1 | cat result.txt |
盲水印
用puzzlesolver的fft(傅里叶变换)
图片拼接
使用PPT或者PS
提取等距像素点
特征:放大图片后看到一个个小的像素点
提取方法1:PS
将宽度高度/10 重新采样选择 临近(硬边缘)
或者在调宽高的时候用鼠标滚轮来调,能更精细一点
但是实测出来效果不佳,得到的图片很糊
方法二:脚本
1 | import os |
python脚本跑的更精确一点,需要知道图片像素起始位置和结束位置,以及像素之间的间距(可以在PS里知道)
输入以下代码:(要注意有时候跑不出来可以复制到桌面上试试)
1 | python get_pixels.py -f comeon.png -p 0x0+3828x2148 -n 12x12 |
这个脚本跑出来更精细一点,也更推荐
cimbar
对照表(简单的),项目地址: https://github.com/sz3/cimbar
exiftool分析图片信息,如GPS
查看信息,记得要在对应目录下开终端
1 | .\exiftool 1.jpg |
查看GPS
1 | .\exiftool -gps:all 1.jpg |
Arnold猫脸变换
参考链接: https://1cepeak.cn/post/arnold/
解密需要提供打乱次数,a,b 。
加密 / 解密代码:
1 | # -*- coding: UTF-8 -*- |
如果报错如下:
decode_image = np.zeros(shape=image.shape) AttributeError: ‘NoneType’ object has no attribute ‘shape’
可以修改如下:
1 | # 1:创建新图像,指定 dtype 为 uint8 |
GIF
gif一般是拆分gif
以及帧间隔里面可能藏东西
使用puzzlesolver即可
二维码
得到的二维码可以用CQR扫一下,或者微信扫一下
在线二维码解码网站: https://qrcode-decoder.com
二维码也容易出拼接题目。
PDF题
编辑pdf
例如那种把图片底下有东西的题目
-在线网站 https://tool.lu/pyc/
音频题
思路:
拿到不管三七二十一先拖进audacity看一下
摩斯密码
看频谱图的时候如果发现是摩斯密码我们直接对着摩斯密码手敲解密
拨号音隐写——DTMF
听着像是在拨号一般的声音,频谱图发现
类似这样的是DTMF隐写
需要我们手敲
把最高和最低一一对应
[!NOTE]
注意DTMF中频率只有697 Hz、770 Hz、852 Hz、941 Hz、 1209 Hz、1336 Hz、1477 Hz 和 1633 Hz
上图手敲得到
1 | 1336-697 1336-941 1336-697 1209-770 1336-941 1477-852 1477-697 1336-941 1336-697 1336-941 1336-697 1209-770 1209-697 1209-697 1336-941 1477-697 |
然后复制进网站解密即可: https://www.dcode.fr/dtmf-code#:~:text=A DTMF code for dual-tone multi-frequency
SSTV慢扫描
github项目: https://github.com/colaclanth/sstv
1 | sstv -d audio_file.wav -o result.png |
注意解码出来是一张图片
然后查看图片
1 | eog result.jpg |
deepsound
如果把音频拖进deepsound解密要密码的话一般就是deepsound隐写
密码看有没有其他地方得到
ZIP题
思路:
zip有密码先看是不是伪加密,再看能不能爆破出来,要不要明文攻击,有没有注释,还有可能是脑洞。。
手动修复zip文件可以看看 其他 && 工具
里的 010editor .zip模板对照表
伪加密
压缩源文件数据区:7-8位表示有无加密
压缩源文件目录区:9-10位表示是否是伪加密
一般这俩地方都是09 00的,大概率就是伪加密了(直接把第二个PK后的09改了就行)
具体可看zip文件结构
010
用010把09 00改了就行
随波逐流
随波逐流提供伪加密修复
ZipCenOp
说是能改伪加密,但实测感觉不好用
1 | java -jar ZipCenOp.jar -r 111.zip |
直接爆破
archpr
如果已知zip的密码很弱可以直接使用archpr来爆破密码
实际上感觉这个也用的比较多
fcrackzip
kali的工具
1 | fcrackzip -u -v -D -p PASSWORD_FILE ZIP_FILE |
我没怎么用过,感觉应该没有archpr好用
CRC32爆破
项目地址: https://github.com/allblue147/zip-crc-tools
crc爆破是里面文件很短,一般只有几字节的情况下
1 | python .\main.py -f decode.zip |
特别需要注意的是要保证 zip 及里面 txt 的名字不能出现中文,有的话重命名一下
掩码爆破
已知部分明文,而且知道密钥的位数的情况下使用掩码爆破
利用archpr进行掩码爆破,不知道的部分改为 ? (注意是英文的问号)
明文攻击
明文攻击的压缩方式是store,如果是store的话一般就是需要明文攻击
pkcrack——已知所有的明文或三段密钥
命令
1 | pkcrack -c "README.txt" -p README.txt -C flag.zip -P README.zip |
方法
1 | -C:要破解的目标文件(含路径) |
bkcrack——已知部分明文/部分文件的所有明文
1.已知部分文件里的部分明文
1 | 至少已知明文的12个字节及偏移,其中至少8字节需要连续。 |
参数
1 | -c 要解密的文件 |
已知的部分明文可以是zip的文件名字
2.已知一个zip里的一个文件的全部内容
例如一个zip里包含 flag.txt 和 md5.txt,可以
1 | bkcrack -C 222.zip -c md5.txt -P 11.zip -p flag.txt |
或者可以
1 | bkcrack -C 222.zip -c important-md5.txt -p flag.txt |
就可以明文攻击三段密钥了。
=>>拿到了三串密钥之后可以改加密密码另存文件
1 | bkcrack -C 222.zip -k 119be489 086fed79 8cbf1ed7 -U out.zip 1234 |
或者爆破出原本密码(知道密码长度)
1 | bkcrack -k 119be489 086fed79 8cbf1ed7 -r 11 \?b |
不知道长度也可以爆破
1 | bkcrack -k 119be489 086fed79 8cbf1ed7 -b \?b |
流量分析题
思路:
先导出一下http,tcp,ftp看一下有没有什么东西,没有再过滤,一个个查看tcp流
如果有东西可以保存下来。
有的是键盘流量和鼠标流量,注意辨别。
如果没思路的话可以试试foremost或者binwalk一下
常用命令
过滤post
1 | http.request.method==POST |
过滤get
1 | http.request.method==GET |
键盘流量
键盘流量是8字节的,鼠标是4字节
可以先用tshark提取
1 | #这个格式为 usbhid |
或者
1 | #这个格式是 usb.capdata. |
键盘流量有标准——hid键盘标准: https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf
如果看的烦的话也可以去网上搜相关的标准
SQL注入——布尔盲注
它是用ascii码的大小比较来判断库名、表名、字段名和字段值的内容的
用二分法来爆破得出库里内容的
可以试着先过滤一下http流量,再/文件/导出分组解析结果/AS CSV,把流量导出成表格。看得更清楚。
一般来说,前面的内容是hacker来判断数据库名、表名、字段名的,我们可以直接拉到最下面来看。
因为用的是二分法,所以在对一个字符进行bool判断时,被重复判断的ASCII值就是正确的字符。
我们需要找到被重复判断的flag的ascii转化。
NTML流量分析(SMB流量)
我们需要的是这些东西
1 | username::domain:ServerChallenge:NTproofstring:modifiedntlmv2response |
有两种方式
1.tshark
tshark可以获得username::domain:ServerChallenge:NTproofstring:
,但是没有modifiedntlmv2response
命令(tshark是kali自带的)
1 | tshark -n -r eztraffic.pcapng -Y 'ntlmssp.messagetype == 0x00000003' -T fields -e ntlmssp.auth.username -e ntlmssp.auth.domain -e ntlmssp.ntlmv2_response.ntproofstr -e ntlmssp.auth.sesskey -e smb2.sesid |
接下来还是要回到流量里找modifiedntlmv2response
,这里顺便讲了第二种方法
2.流量里找
过滤这个
1 | ntlmssp |
找到NTLMSSP_AUTH
包 打开流量包中的 Security Blob
层 复制用户名、域名
然后过滤
1 | ntlmssp.ntlmserverchallenge |
查找NTLM Server Challenge
字段,通常这个数据包是在NTLM_Auth
数据包之前,将该值作为十六进制字符串复制到文本文档
最后需要的modifiedntlmv2response
仍然在NTLM_Auth
里
需要我们在里面找到NTLMv2 Response
除了NTProofStr
以外的就是我们要找的modifiedntlmv2response
了(注意这里复制hex值)
==>得到的所有东西需要以
username::domain:ServerChallenge:NTproofstring:modifiedntlmv2response
形式保存到txt文本里,然后使用hashcat爆破
1 | .\hashcat -m 5600 hash.txt rockyou.txt |
就能拿到密码了。
内存取证/磁盘取证
思路:
这种需要虚拟机来挂载文件,可以使用vmware或者FTK,我做的不多。。
或者用vera挂载的。
veracrypt
这个需要一个文件,可以挂载磁盘
而且可能会需要密钥和密钥文件,例子:
vol2 || vol3
可以使用vol2或3来分析
查看imageinfo——查看操作版本
1 | vol.py -f image.raw imageinfo |
lsadump——看用户密码
1 | vol.py -f image.raw --profile=Win7SP1x86_23418 lsadump |
vol2的一些基本命令
1 | # 识别操作系统的基本信息 |
注意,mspaint.exe是画图进程,可能会藏东西,如果有的话可以dump下来,改后缀为.data,使用GIMP2打开图片。不断修改x,y的值直到看到藏的东西。(GIMP2可以在microsoft store里下到)
.vmdk文件
后缀为 .vmdk
的文件是 VMware 虚拟磁盘文件,通常用于虚拟机环境中存储虚拟机的磁盘数据。
可以使用虚拟机打开试试。
有些可以看010,有内容的话,可以尝试解密,有时候直接复制解密不了
可以使用kali自带的7z解密提取这些文件
1 | 7z x flag.vmdk -o./ |
解压后就能看到好几个文件夹
vhd文件
这是磁盘文件,可以直接双击打开,会发现多了两个磁盘,在磁盘里可以找东西
怎么虚拟化来看图形化界面?
使用Hyper-V搭建虚拟机(怎么下Hyper-V?可以看这个
注意挂载vhd的时候要选择第一代来挂载,不然会报错
进入后可以win+r看上一条命令找线索。
理论上也可以更改vhd格式来使用vmware挂载。
iso映像文件
一般是u盘文件,可以直接改后缀为zip然后解压,或者formost提取出里面的内容
pyjail / py沙盒逃逸
思路:
要看他给没给源代码,没有怎么猜测,给了怎么绕过黑名单/长度限制等等
ms-office题
思路:
可以改后缀为zip看看,文本里可能会把文字改成白色的来隐藏可以ctrla+改色看看
ms-office文件本质是zip
MS-Office文件word、excel、ppt本质都是zip文件,就可以隐写。
可以直接改后缀名为zip
宏
如果后缀是docm的话可能有宏,在宏里看看
1.WPS自带宏查看,在 视图/宏/查看宏 里
2.使用olevba
1 | olevba decode.docm |
doc里隐藏文字
勾选文件/选项/显示/隐藏文字
然后看看有无隐藏的东西
视频题
思路:
我遇到的一般是在视频的某一帧里藏二维码之类的内容,需要好点的眼力
帧慢放
使用potplayer即可
其他 && 工具
反编译——这应该是reverse领域才对。。
pyc反编译
.pyc
是 Python 编译后的字节码文件,通常是在运行 Python 脚本时由解释器自动生成,用于加速程序运行想查看
.pyc
文件的源码,可以使用反编译工具 uncompyle6 将其还原为.py
文件。
-使用 uncompyle6
-在线网站 https://tool.lu/pyc/
exe反编译
使用IDA
apk反编译
使用jadx-gui-1.4.4-no-jre-win.exe
画图工具
gnuplot
得到诸如(7,7)的文本我们需要转化成 7 7 ,如
转化成 ↓ ↓ ↓
这里的转化我们可以使用脚本:
1 | with open('E:\meihuai.txt', 'r') as res: # 坐标格式文件比如(7,7) |
然后再用
gnuplot
plot ‘zuobiao.txt’
来进行画图,画好后会自己打开
路由器配置查看工具
RouterPassView
-下载 https://routerpassview.en.lo4d.com/windows
使用方法:
用于恢复路由器密码的工具,能够从路由器中提取用户,密码,无线密钥等信息
RouterPassView,大多数现代路由器允许您备份到一个文件路由器的配置,然后从文件中恢复配置时的需要。路由器的备份文件通常包含了像您的ISP的用户名重要数据/密码,路由器的登录密码,无线网络的关键。如果你失去了这些密码1 /钥匙,但你仍然有你的路由器配置的备份文件,RouterPassView可以帮助你从你的路由器恢复您丢失密码的文件。
010editor .zip模板对照表
1 | + ZIPFILERECORD record # 压缩源文件数据区 |
一些kali的小知识
基本命令
1 | ls #列出所有东西 |
切换python版本
kali自带python2.7和python3.x,有时候需要我们切换
1 | update-alternatives --config python |
然后选序号就行
图形化桌面-远程连接
这个要自己下
1 | kex |
虚拟环境
Kali Linux 对 Python 包管理进行了限制,防止系统范围内的 Python 安装被破坏。所以有时候报错是需要使用虚拟环境
创建一个新的虚拟环境:
1 | python3 -m venv env #env是虚拟环境名称,可以更改 |
激活虚拟环境:
1 | source env/bin/activate |
在虚拟环境中就可以安装一些东西了
退出虚拟环境:
1 | deactivate |
删除虚拟环境只需要删除对应虚拟环境的目录即可
一些windows的小知识
基本命令
1 | ls #列出所有东西 |
alt
按住alt再按小键盘的数字的话可以输出对应的ascii码值,比如我按住alt再按65的话会输出A
删除windows自带防火墙——windows defender
github网址: https://github.com/ionuttbara/windows-defender-remover