前言
第三题根据提示可以知道是Google的一种数据交换格式,去查资料能知道是基于二进制传输的,所以效率高。
第三题write up
首先需要对数据解码,既然是二进制的数据,在浏览器端应该是乱码的,现在访问是明文的,根据数据来看,就是做了16进制,转回去就好了。
访问首页
0a05696e646578121868656c6c6f207468697320697320696e6465782070616765
然后将十六进制转为字符串
可以看出确实乱码了,但是字符串还是可以看的,这个信息提示这是首页,根据提示信息,返回什么格式,就传入什么格式,我们传入看看。
返回信息已经变了,继续解开看看。
0a056572726f72122f66756e635f6e616d65206d6179626520697320666c61673f206d657373616765206d61796265206973206d7870793f
返回信息说func_name和message的可能值是flag和mxpy。
那么这时候有个问题,我们怎么编码出这个数据,这时候要去查资料了。
首先要制作一个文件
https://blog.csdn.net/qq_56044032/article/details/131358574
然后用工具生成对应的类,这里我们写一个机构文件。
syntax = "proto3";
message test {
string func_name = 1;
string message = 2;
}
然后生成
得到test_pb2.py文件(这里用的python来解析),然后我们编辑得到我们需要的数据。
得到数据如下
0a04666c616712046d787079
然后我们传进去看看
返回数据又变了
0a04666c616712266d7870797b35316631383236623937353734636339396633366431353836343034393665667d
我们解开看看
答案就出来了
如果这样不好看,还可以用解析protobuf的工具:
https://protobuf-decoder.netlify.app/
至此,结束。(python调用protobuf的文件需要安装第三方库,请自行查阅,需要服务端源代码请访问原文公告页面下载,截止本文发布时应该没有,因为我还在睡觉,等我起来就更新公告了。)