L1E6N0A2

监督自己不断学习

0%

每日一题12.14

每天一道CTF,日积月累,期待进步!

ZIP伪加密,PHP伪协议

一、ZIP伪加密、CRC校验

文件flag6.zip 说明密码是6位的。

flag6

打开WINRAR查看CRC32码

CRC

方法一:CRC校验

文件的CRC32编码可以利用python的binascii库的crc32函数计算出来,因此可以进行爆破

1
2
3
4
5
import binascii
real = 0x9c4d9a5d
for y in range(100000, 999999):
if real == (binascii.crc32(str(y)) & 0xffffffff): #%x返回16进制
print(y)

输出结果:954288,就是压缩包里txt的内容,即flag。

方法二:zip伪加密

zip伪加密是在文件头的加密标志位做修改,进而再打开文件时识被别为加密压缩包。

伪加密

  • 无加密

压缩源文件数据区的全局加密应当为00 00
且压缩源文件目录区的全局方式位标记应当为00 00

  • 假加密

压缩源文件数据区的全局加密应当为00 00
且压缩源文件目录区的全局方式位标记应当为09 00

  • 真加密

压缩源文件数据区的全局加密应当为09 00
且压缩源文件目录区的全局方式位标记应当为09 00识别

用winhex打开题目中的zip文件,发现是伪加密,修改01(0x00000039 处)为00,保存,解压。

本题

get

打开得到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://读取本地文件