tiny traffic
下载附件,得到一个流量包,wireshark打开分析流量,选择导出http对象,可以看到下面有flag,test,secret文件的压缩包,将其全部导出.
按照格式将压缩文件全部解压,最终得到三个文本,如图
发现test文本是一段代码,从第一行知道这是proto文件,proto是一种效率很高的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等,和语言无关,平台无关,拓展性很好,可以类比为XML。详细信息可以翻阅proto手册https://developers.google.com/protocol-buffers/docs/proto3?hl=zh-cn#generating,需要科学上网。
由此推测secret应该是由proto序列化后的文件,那么只要再将其反序列化后,就可以得到原本的数据了。test文件中定义了消息格式,首先要为test创建一个可用来操作的python文件。
首先安装proto环境,下载地址送上https://github.com/protocolbuffers/protobuf/releases,根据自己的生产环境选择对应的版本下载。笔者是win64版。
安装好后,将test文件更名为test.proto
,和secret一起放在与protoc.exe同目录下。执行命令.\protoc.exe --python_out=. .\test.proto
上条命令将会生成一个python的模块文件test_pb2.py
有了这个文件,便可以对secret进行反序列化处理,下面给出脚本
执行前先安装protobuf模块pip inistall protubuf
1 | import test_pb2 |
最终得到secret反序列化后的结果
1 | $ python -u "g:\terminal\protoc-3.17.0-win64\bin\1.py" |
把上面五个部分拼起来就是flag了,得到flag为CISCN{e66a22e23457889b0fb1146d172a38dc}
easy_resource
扫描得到.index.php.swo,读取源码
考虑利用原生类ReflectionMethod读取User类中的方法;
构建payload:?rc=ReflectionMethod&ra=User&rb=&rd=getDocComment,rb取a-z,burp尝试爆破
得到flag