MISC–gzcompress压缩流量包
题目: 提示PHP的gzcompress压缩算法,提供一个可下载数据包。
初步思路: 数据提取可用文件,利用PHP的gzuncompress解压缩。
1、从数据中提取可用文件
①过滤数据包
一大堆混乱的数据包,通过使用过滤器过滤掉没价值的。因为是题目提示了PHP,所以可以先尝试一下过滤出HTTP协议。
可以明显的看出大量的HEAD方法。[HEAD: 用来获取请求实体的信息而不需要传输实体主体。个人见解: 用来判断服务器是否存在请求的文件]
初步判断是在进行扫描目录的操作。
拉到最后发现两个200回显,说明请求的文件存在。
②文件提取
可以看到文件名中有base64_decode()。所以先将里面的内容base64解码。这使用python的base64库解码。
需要注意的是,输入的字符串必须符合base64的padding规则(当原数据长度不是3的整倍数时,在结果后面加‘=’。)
2、gzuncompress解码
①使用notepad++打开,发现一大堆的乱码。其实是压缩后的字符串。
②解压缩需要先将乱码转为base64编码。
这里使用python的文件打开配合base64库。直接将乱码进行base64编码得到的值是错的。
这里也可以直接使用Notepad++的base64插件
③再利用PHP的gzuncompress函数解压缩
1 | <?php |
使用PHPstudy运行PHP脚本即可得到flag。