本文是i春秋线下就业班结业学员「YongYe」分享的技术文章,公众号旨在为大家提供更多的学习方法与技能技巧,文章仅供学习参考。
YongYe
RPC介绍
YongYe:刚好最近遇到使用JSON-RPC操作接口的情况,跟大家分享一下我的测试方式。目前针对接口测试,如JSON-RPC或XML-RPC这两种不同类型接口的测试文章比较少。
这篇文章主要是帮助大家更直观的学习在JSON-RPC中的测试方式,以及JSON-RPC的基础格式,便于大家了解这种接口的特征和错误信息的含义。
请求格式
Json-Rpc向服务器传输数据标准格式如下:
{
"jsonrpc" : 2.0,
"method" : "xxxxx",
"params" : ["xxxxx"],
"id" : xx
}
jsonrpc | JSON-RPC版本。 |
method | 被调用的方法的名称。 |
params | 调用方法需要传递的参数的数组或字典。 |
id | 当前请求的唯一标识。服务器会返回相同ID的响应。 |
常见的请求方式
{
"jsonrpc":"2.0",
"method": "xxxx,
"params":[11,22],
"id": 1
}
2. 键值式请求
使用键值对形式提交参数
{
"jsonrpc":"2.0",
"method": "xxx",
"params":{
"key1": 11,
"key2": 22
},
"id": 1
}
响应格式
{
"jsonrpc" : 2.0,
"result" : "xxx",
"error" : xxxx,
"id" : 1
}
jsonrpc | JSON-RPC版本。 |
result | 被调用的函数的返回值/结果。 |
error | 调用发送错误时存在该值,返回错误对象。正常调用则该参数可以为空。 |
id | 对应请求的唯一标识ID。 |
错误对象格式
{
"code" : 1,
"message" : "xxx",
"data":xxxx
}
code | 错误码。 |
message | 错误的描述消息。 |
data | 其它错误信息。 |
常见错误码
代码 | 错误 | 含义 |
-32700 | 解析错误 | 服务器接收到无效的JSON、服务器解析JSON文本发生错误。 |
-32600 | 无效的请求 | 发送的JSON不是一个有效的请求。 |
-32601 | 方法未找到 | 方法不存在或不可见。 |
-36602 | 无效的参数 | 无效的方法参数。 |
-36603 | 内部错误 | JSON-RPC内部错误。 |
-32000至-32099 | 服务器端错误 | 保留给具体实现服务器端错误。 |
常规测试方法
{
"jsonrpc": "2.0",
"method": "Post",
"params": {
"model": "partner",
"args": [[1], ["name", "email"]]
},
"id": CrazyThursdayKfcVme50
}
{
"jsonrpc": "2.0",
"method": "Post",
"params": {
"model": "User",
"args": [[2], ["id", "name", "email", "phone"]]
},
"id": CrazyThursdayKfcVme50
}
{
"jsonrpc": "2.0",
"params": {
"model": "partner",
"method": "search_read",
"args": [[1], ["name", "email"]] ,
"uid": 50
},
"id": CrazyThursdayKfcVme50
}
{
"jsonrpc": "2.0",
"params": {
"model": "partner",
"method": "search_read",
"args": [[1], ["name", "email"]] ,
"uid": 1
},
"id": CrazyThursdayKfcVme50
}
{
"jsonrpc": "2.0",
"params": {
"model": "partner",
"method": "create",
"args": [[1], ["name", "email"]] ,
"uid": 50
},
"id": CrazyThursdayKfcVme50
}
{
"jsonrpc": "2.0",
"params": {
"model": "partner",
"method": "select",
"args": [[1], ["name", "email"]] ,
"uid": 50
},
"id": CrazyThursdayKfcVme50
}
{
"jsonrpc": "2.0",
"params": {
"model": "partner",
"method": "create",
"args": [[1], ["name", "email"]] ,
"uid": 50
},
"id": CrazyThursdayKfcVme50
}
{
"jsonrpc": "2.0",
"params": {
"model": "partner%27select user()--c",
"method": "create%22",
"args": [[1], ["name", "emailorder"]] ,
"uid": 50
},
"id": CrazyThursdayKfcVme50
}
{
"jsonrpc": "2.0",
"method": "Post",
"params": {
"model": "exec",
"args": [["ping"], ["xxxxx.xxx"]] ,
"uid": 50
},
"id": CrazyThursdayKfcVme50
}
{
"jsonrpc": "2.0",
"method": "Post",
"params": {
"model": "exec",
"args": [["cmd"], ["whoami"]] ,
"uid": 50
},
"id": CrazyThursdayKfcVme50
}
总结
线下就业班是由i春秋教研组结合众多安全企业制定的网络攻防面授课程,拥有多年的红蓝对抗基因。课程配套150+实验靶标、6大平行仿真综合靶场,真正做到学练同步、“内外兼修”。值得一提的是,学员在课程的中、后期,将由讲师带队,真正参与到实战项目和CTF比赛,锻造实战技能,为就业增添一份重要筹码。
扫码咨询招生老师,一对一答疑解惑
戳这里,了解更多课程详情
原文始发于微信公众号(YongYe 安全实验室):红队渗透测试工程师分享JSON-RPC测试方法
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论