1.什么是SQL注入?
sql 注入是一种将 sql 代码添加到输入参数中,传递到 sql 服务器解析并执行的一种攻击手法。
2.SQL注入的原理
SQL 是操作数据库数据的结构化查询语言,网页的应用数据和后台数据库中的数据进行交互时会采用 SQL。而 SQL 注入是将 Web 页面的原 URL、表单域或数据包输入的参数,修改拼接成 SQL 语句,传递给 Web 服务器,进而传给数据库服务器以执行数据库命令。
3.形成SQL注入的原因
用户输入的数据被 SQL 解释器执行。
4.SQL注入的危害
| |
| |
| |
| |
| |
|
5.SQL注入基本知识
注:以下命令语句均基于 MySQL 数据库
(1)增删改查语句
增 Insert
基本语法 INSERT INTO 表名称 VALUES (值1, 值2,....)
例子 insert into student(name,sex,age) values('张三',18,'男')
删 delete
基本语法 DELETE FROM 表名称 WHERE 列名称 = 值
例子 delete from student where id=1
改 update
基本语法 UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
列子 update student set name = '张三' where id=1
查 select
基本语法 SELECT 列名称 FROM 表名称
例子 select * from student
(2)系统函数
- version()——MySQL 版本
- user()——数据库用户名
- database()——数据库名
- @@datadir——数据库路径
- @@version_compile_os——操作系统版本
(3)字符串连接函数
concat(str1,str2,...)
没有分隔符地连接字符串concat_ws(separator,str1,str2,...)
含有分隔符地连接字符串group_concat(str1,str2,...)
连接一个组的所有字符串,并以逗号分隔每一条数据
(4)一般流程
Mysql 有一个系统数据库 information_schema,存储着所有的数据库的相关信息,一般的, 我们利用该表可以进行一次完整的注入。以下为一般的流程。
猜数据库select schema_name from information_schema.schemata
猜某库的数据表select table_name from information_schema.tables where table_schema=’xxxxx’
猜某表的所有列Select column_name from information_schema.columns where table_name=’xxxxx’
获取某列的内容Select *** from ****