第54天:Web攻防-SQL注入&数据类型&参数格式&JSON&XML&编码加密&符号闭合&复盘报告

#知识点
1、Web攻防-SQL注入-参数类型*参数格式

2、Web攻防-SQL注入-XML&JSON&BASE64等

3、Web攻防-SQL注入-数字字符搜索等符号绕过


一、数据库知识:

1、数据库名,表名,列名,数据

2、自带数据库,数据库用户及权限

3、数据库敏感函数,默认端口及应用

4、数据库查询方法(增加删除修改更新)

二、SQL注入产生原理:

代码中执行的SQL语句存在可控变量导致

三、影响SQL注入的主要因素:

1、数据库类型(权限操作)

2、数据操作方法(增删改查)

3、参数数据类型(符号干扰)

4、参数数据格式(加密编码等)

5、提交数据方式(数据包部分)

6、有无数据处理(无回显逻辑等)

四、常见SQL注入的利用过程:

1、判断数据库类型

2、判断参数类型及格式

3、判断数据格式及提交

4、判断数据回显及防护

5、获取数据库名,表名,列名

5、获取对应数据及尝试其他利用

五、黑盒/白盒如何发现SQL注入

1、盲对所有参数进行测试

2、整合功能点脑补进行测试

白盒参考后期代码审计课程

利用过程:

获取数据库名->表名->列名->数据(一般是关键数据,如管理员)

六、案例说明:

在应用中,存在参数值为数字,字符时,符号的介入,另外搜索功能通配符的再次介入,另外传输数据可由最基本的对应赋值传递改为更加智能的XML或JSON格式传递,部分保证更安全的情况还会采用编码或加密形式传递数据,给于安全测试过程中更大的挑战和难度。

1、数字,字符,搜索

例:

select * from news where id=$id;

select * from news where name='$name';

select * from news where name like '%name%';

符号干扰:有无单引号或双引号及通配符等

order by 3

union select 1,2,3

知道数据库名:database() news_db

获取数据库名下的表名信息:

借助自带的information_schema.tables表(记录所有数据库名下的表名)

1%' union select 1,2,table_name from information_schema.tables where table_schema='news_db'#

admin下列名

借助自带的information_schema.columns表(记录所有数据库名下的表名对应的列名信息)

1%' union select 1,2,column_name from information_schema.columns where table_schema='news_db' and table_name='admin'#

news_db

admin

username,password

1%' union select 1,2,password from admin#

2、XML,JSON,编码,混合

XML:

<?xml version="1.0" encoding="UTF-8"?>

<news>

<article>

<id>1</id>

<title>xiaodi</title>

<content>i am xiaodi</content>

<created_at>2025-03-07</created_at>

</article>

<article>

<id>2</id>

<title>xiaodisec</title>

<content>i am xiaodisec</content>

<created_at>2025-03-06</created_at>

</article>

</news>

JSON:

{

"news:"[

{

"id": 1,

"title": "xiaodi",

"content": "i am xiaodi",

"created_at": "2025-03-07"

},

{

"id": 2,

"title": "xiaodisec",

"content": "i am xiaodisec",

"created_at": "2025-03-06"

}

]

}

Base64:

{

"news": [

{

"id": "MQ==",

"title": "eGlhb2Rp",

"content": "aSBhbSB4aWFvZGk=",

"created_at": "MjAyNS0wMy0wNw=="

},

{

"id": "Mg==",

"title": "eGlhb2Rpc2Vj",

"content": "aSBhbSB4aWFvZGlzZWM=",

"created_at": "MjAyNS0wMy0wNg=="

}

]

}

①数据传输采用XML或JSON格式传递

A、json发包注入:

B、xml发包注入:

②数据传输采用编码或加密形式传递

③数据传递采用JSON又采用编码传递

七、实例应用:

1、JSON注入案例:

SRC报告-众测下的SQL注入挖掘

SRC报告-edu-SQL注入案例分享

SRC报告-河南省xxxx某站存在SQL注入漏洞

2、编码注入案例:

互联网搜下对应说明

实战 || 记一次某项目中奇怪的SQL注入漏洞

相关推荐
泡茶喝茶写代码1 分钟前
A股量化策略回测实战:从行情数据到绩效评估(第 1 篇):回测引擎从零搭建
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
鶴哥只手遮天1 分钟前
Spring Boot 4.1.1 深度源码解析-第 10 章 · Profile 与多文档:`spring.config.activate`
java·后端·开源
鶴哥只手遮天2 分钟前
Spring Boot 4.1.1 深度源码解析-第 06 章 · Environment 构建:PropertySource 次序
java·后端·开源
鶴哥只手遮天2 分钟前
Spring Boot 4.1.1 深度源码解析-第 09 章 · `@ConfigurationProperties` 全生命周期:注册、绑定、校验与 AOT
java·后端·开源
Wang's Blog7 分钟前
Java 项目实战: 交友项目 - 百度人脸识别:抽取自动装配组件
java·百度·交友
鶴哥只手遮天7 分钟前
Spring Boot 4.1.1 深度源码解析-第 08 章 · Binder 绑定引擎:从字符串到 Java 对象的完整路径
java·后端·开源
希洛兔8 分钟前
开闭原则详解:对扩展开放,对修改关闭(含图形编辑器反例 + 抽象正例 + JDK/Spring 实战)
java·开闭原则
鶴哥只手遮天8 分钟前
Spring Boot 4.1.1 深度源码解析-第 03 章 · 模块化的自动配置:`*.imports`机制、classic 兼容层与 Starter 生成
java·后端·开源
鶴哥只手遮天9 分钟前
Spring Boot 4.1.1 深度源码解析-第 02 章 · 构建体系深潜:Gradle 约定插件、自动配置的编译期校验与依赖治理
java·后端·开源
geats人山人海17 分钟前
java 8 字符串
java·开发语言