1.6SQL手工注入方法
简介:文章分为三部分:1、概要;2、详细的思维导图;3、详细的解说。
描述:概要包括该文介绍的知识点;详细的思维导图更好地理清思路,方便记忆,但对于有些对于作者比较基础的内容不会有详细的解释,建议主动了解;详细的解说作者会根据思维导图的纲要添加代码语句等内容,有时间会添加具体操作,具体步骤,操作结果等内容,添加需要注意的Tips(蓝色字体怎样)。
前面的话:操作学习的环境----Linux环境+docker+sqli-labs。环境配置请看:第一章:SQL注入基础--1.1Web应用架构分析&1.2 SQLi注入环境搭建或私信我亲测有效的资源给你。
Tips:这些都是作者学习过的内容,文字、思维导图等都是一双手,后续会连载这系列以及丰富流程说明,欢迎沟通交流、留言,觉得必要的也可收藏关注
1、概要:
1.6SQL手工注入方法
MySQL数据库结构
MySQL手工注入方法
核心原理:
查询数据核心语法:(重点)
提示
2、详细的思维导图:
3、详细的解说:
1.6 SQL手工注入方法
MySQL数据库结构
存储引擎层
磁盘、内存、网络
SQL层
基本
·解析器·查询执行
·授权·查询高速缓存
·优化器·查询日志记录
SQL层的功能:
1、判断语法、语句、语义
2、数据库对象授权情况判断,授权失败不继续
3、解析(解析器):将sql语句解析成执行计划,运行执行计划,生成找数据的方式
4、优化(优化器):运行执行计划,基于算法,从执行计划中选择代价最小的交给“执行器”
5、执行(执行器):运行执行计划,最终生产如何去磁盘找数据方式
6、将取数据的方式,交由下层(存储引擎层)进行处理
7、最终将取出的数据抽象成管理员或用户能看懂的方式(表),展现在用户面前
8、查询缓存:缓存之前查询的数据
MySQl内置库(>=5.7)
mysql
保存有账户信息,权限信息,存储过程,event,时区等信息。
sys
包含了一系列的存储过程、自定义函数以及视图来帮助我们快速的了解系统的元数据信息。
(元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等)
performance_schema
用于收集数据库服务器性能参数
information_schema
它提供了访问数据库元数据的方式。
其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表的数据类型与访问权限等。
连接层
(与应用程序连接)
通信协议
线程
验证
MySQL手工注入方法
核心原理:
MySql内置的information_schema库,它功能强大,是我们进行MySql注入的基石!通过information_schema我们可以窥透整个MySQL的运行情况,也可以查看到数据库中所有的数据信息。
查询数据核心语法:(重点)
查库
select schema_name from information_schema.schemata
查表
select table_name from information_schema.tables where table_schema=库名
查列
select column_name from information_schema.columns where table_name=表名
查数据
select 列名from库名.表名
提示
所有类型的sql注入,都是基于查库、表、列语句
在一些场景,想要快速获取数据,需借助工具,如:BurpSuite
如果数据太多,导致无法返回查询结果:查询的场景:
可利用limit限定返回的数量及位置,依次查询回显数据的场景:*concat*链接多个数据成为一条返回结果