RAR文件的组成
RAR是有四个文件块组成的,分别是分别是标记块、归档头部块、文件块、结束块,这些块之间没有固定地先后顺序,但要求第一个块必须是标志块并且其后紧跟一个归档头部块
RAR的标记块和结束块都是固定的7字节序列,分别为0×52 61 72 21 1A 07 00和0xC4 3D 7B 00 40 07 00
每一块后面都有两个crc校验,在crc之后的字节用于判断块类型
HEAD_TYPE=0x72 标记块
HEAD_TYPE=0x73 压缩文件头
HEAD_TYPE=0x74 文件头
HEAD_TYPE=0x75 注释头
HEAD_TYPE=0x76 旧风格的用户身份信息
HEAD_TYPE=0x77 子块
HEAD_TYPE=0x78 恢复纪录
HEAD_TYPE=0x79 用户身份信息
HEAD_TYPE=0x7a subblock
比如上图rar要获取的文件除了flag.txt外还有secret.png,本来在A8 3C校验位后被改成了7A,被锁定后解压文件无法看到secret.png,所以这里需要自己改块标志将其改为文件块
ZIP文件的组成
压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志
50 4B 03 04是ZIP头文件标记
14 03是解压文件需要的PK版本
00 00是全局方位标记(文件是否有加密可通过这两位来判断,单数为加密,偶数为无,例如:00 02 04表示加密,01 03 09表示无)
之后查看压缩包里有多少文件可以查找50 4B有多少个就行了
不过压缩源文件数据区跟压缩源文件目录区是不一样的,文件标识依然是前四位,之后四位分别对应压缩需要的PK版本跟解压需要的PK版本之后的00 00对应数据区的全局方位标记(判断加解密与上面一样)
在CTF题中会存在伪加密的zip文件,原理就是更改了其中的全局方位标记
ps:Kali中用binwalk -e可以直接解压,此工具分离文件的原理就是识别文件头后进行文件分离
网友评论