SQL注入入门
必备知识清单
1.认识中小型网站开发使用的数据库MYSQL(当然不限于此数据库,别的也类似)
2.了解基本的SQL语句
3.清楚sql中数据类型:三种:数字型,文本型,时间。(便于更清晰的理解闭合)
4.SQL语句中的基本注释方式
@
#
—— —— (杠杠空格),空格 可等价 + (例如—— —— + )
/ * ....*/
/ *!....* / ;Mysql专属内敛注释,常用来绕过waf
5.了解mysql数据表的基本结构
6.MYSQL元数据库(5.0版本以下无元数据库数据结构)
元数据: 元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据库是按照数据结构来组织、存储和管理数据的数据的仓库。
数据结构组织方式:(元数据库 -> 数据库列表->表列表->字段列表->表内容)
information_schema(相当于包含数据库的一个数据库)
描述整个MySQL服务器有哪些数据库(schemata),每个数据有哪些表(tables),每个表有哪些字段(columns)。
(查库)
在information_schema下:
schemata表,提供了当前mysql实例中所有数据库的信息。
(查表)
tables表(所有数据库中所有表的名字),其中字段:table_name(表的名字)和table_schema(记录这张表所属的数据库名字)
(查列 | 字段)
columns表(存储所有字段的名字),其中字段colunm_name(存储字段名)和table_name(记录字段所属的表名)和table_schema(记录字段所属的数据库名字)
7.元数据库 -> 数据库列表->表列表->字段列表->表内容 (记住:也不用硬记,用多了也就自然记住了)
查库:select schema_name from information_schema . schemata
//schemata表中的 schema_name 字段为所有数据库名.
查表:select table_name from information_schema.tables where table_schema=‘test’
//查询test库下的所有表名
查字段:select column_name from information_schema.columns where table_name=‘user’
//查询user表中的所有字段列。
查字段内容:select username,password from databasetest.users
//查出数据库名为databasetest下的users表中的内容
注:采用<数据库名>.<表名>的标准格式来访问某个数据库下的表。
8.了解常用的 语法 和 函数等
order by [数字] //猜字段数列数
union select //先把前面的-1闭合掉,然后查询想要的数据,猜字段数列数(联合查询必须类型一致)
limit a,b //第a行下连续读b个字段
group_concat() //多行数据处理到一行
concat_ws() //多行数据格式化显示到一行
system_user() //系统用户名
user() //用户名
current_user() //当前用户名
database() //当前数据库名
version() //查看版本
@@datadir //查看sql安装路径
@@version_compile_os//查看安装sql的系统版本
9.聊聊注入核心关键:闭合
闭合目的: 破坏原先的SQL语句,使自己构造的语句能够实现执行。
这里直接分享个视频,易懂简洁
点击此处视频学习
熟悉了以上知识基本就可以找些靶场练手了。