20240113-元旦解题游戏-第三题


前言

第三题根据提示可以知道是Google的一种数据交换格式,去查资料能知道是基于二进制传输的,所以效率高。

第三题write up

首先需要对数据解码,既然是二进制的数据,在浏览器端应该是乱码的,现在访问是明文的,根据数据来看,就是做了16进制,转回去就好了。

访问首页

0a05696e646578121868656c6c6f207468697320697320696e6465782070616765

然后将十六进制转为字符串

null

可以看出确实乱码了,但是字符串还是可以看的,这个信息提示这是首页,根据提示信息,返回什么格式,就传入什么格式,我们传入看看。

null

返回信息已经变了,继续解开看看。

0a056572726f72122f66756e635f6e616d65206d6179626520697320666c61673f206d657373616765206d61796265206973206d7870793f

null

返回信息说func_name和message的可能值是flag和mxpy。

那么这时候有个问题,我们怎么编码出这个数据,这时候要去查资料了。

null

首先要制作一个文件

https://blog.csdn.net/qq_56044032/article/details/131358574

然后用工具生成对应的类,这里我们写一个机构文件。

syntax = "proto3";message test {  string func_name = 1;  string message = 2;}

然后生成

null

得到test_pb2.py文件(这里用的python来解析),然后我们编辑得到我们需要的数据。

null

得到数据如下

0a04666c616712046d787079

然后我们传进去看看

null

返回数据又变了

0a04666c616712266d7870797b35316631383236623937353734636339396633366431353836343034393665667d

我们解开看看

null

答案就出来了

如果这样不好看,还可以用解析protobuf的工具:

https://protobuf-decoder.netlify.app/

null

至此,结束。点击下载服务端源代码(需要自行安装缺少的库),https://wiki.shikangsi.com/media/game/3.zip