SQL注入:
基础:
1. SQL注入的原理:
SQL注入漏洞的产生需要满足以下两个条件。
• 参数用户可控:前端传给后端的参数内容是用户可以控制的。
• 参数代入数据库查询:传入的参数拼接到SQL语句,并且带入数据库查询。
-
MySQL与SQL注入相关的知识点:
• 在MySQL5.0版本后,MySQL默认在数据库中存放一个‚information_schema‛的数据库,在该库中,我们需要记住三个表名,分别是schemata,tables,columns。
• Schemata表存储的是该用户创建的所有数据库的库名,需要记住该表中记录数据库名的字段名为schema_name。
• Tables表存储该用户创建的所有数据库的库名和表名,要记住该表中记录数据库库名和表名的字段分别是table_schema和table_name.
• Columns表存储该用户创建的所有数据库的库名、表名、字段名,要记住该表中记录数据库库名、表名、字段名为table_schema、table_name、columns_name -
函数:
• Version();当前mysql的版本
• Database();当前网站使用的数据库
• User();当前MySQL的用户
• group_concat():查询同类所有数据 -
注释符号
• #
• --空格 空格可以使用+代替
• /**/ -
SQL注入漏洞探测方法
(1).整型参数的判断当输入的参数YY为整型时,通常abc.asp中SQL语句大致如下:select * from 表名 where 字段=yy
(2)字符串型参数的判断
当输入的参数YY为字符串时,通常abc.asp中SQL语句大致如下:
select * from 表名 where 字段=‘YY’ -
SQL注入点类型:
• 数字型 ID= I D • 字 符 串 型 U S E R N A M E = ‘ ID • 字符串型 USERNAME=‘ ID•字符串型USERNAME=‘USERNAME’
• 搜索型 text LIKE ‘%{$_GET[‘search’]} -
Union注入攻击:在mysql中可以用来查询指定数据
• Union联合查询思路:
• a.判断是否存在注入点。id=1, id=1’, and 1=1,and 1=2
• b.order by 1-99 语句来查询该数据表的字段数量,如果id