每天一道CTF,日积月累,期待进步!
ZIP伪加密,PHP伪协议
一、ZIP伪加密、CRC校验
文件flag6.zip 说明密码是6位的。

打开WINRAR查看CRC32码

方法一:CRC校验
文件的CRC32编码可以利用python的binascii库的crc32函数计算出来,因此可以进行爆破
1 | import binascii |
输出结果:954288,就是压缩包里txt的内容,即flag。
方法二:zip伪加密
zip伪加密是在文件头的加密标志位做修改,进而再打开文件时识被别为加密压缩包。


- 无加密
压缩源文件数据区的全局加密应当为00 00
且压缩源文件目录区的全局方式位标记应当为00 00
- 假加密
压缩源文件数据区的全局加密应当为00 00
且压缩源文件目录区的全局方式位标记应当为09 00
- 真加密
压缩源文件数据区的全局加密应当为09 00
且压缩源文件目录区的全局方式位标记应当为09 00
用winhex打开题目中的zip文件,发现是伪加密,修改01(0x00000039 处)为00,保存,解压。


打开得到954288.
二、php伪协议(12.16的更详细)
https://segmentfault.com/a/1190000018991087
php://filter/read=convert.base64-encode/resource=[文件名]读取文件源码
php://input +[post data]执行php代码
zip://可以访问压缩文件中的子文件,并且不需要指定后缀名可修改为任意后缀:jpg png等。
file://读取本地文件