SQL注入漏洞(一)
SQL注入原理
形成原因:用户输入的数据被SQL解释器执行
攻击的目的只有一个,就是为了绕过程序限制,使用户输入的数据带入数据库中执行,利用数据库的特殊性获取更多的信息或更多的权限。
注入漏洞分类
- 数字型注入
- 字符型注入
1.数字型注入
当输入的参数为整型时,如:ID,年龄,页码等,若存在注入漏洞,则可认为是数字型注入。
测试步骤
www.xxxxx.com/test.php?ID=2 '
测试页面是否出现异常www.xxxxx.com/test.php?ID=2 and 1=1
测试页面是否和原始数据一样www.xxxxx.com/test.php?ID=2 and 1=2
返回数据始终为假
以上三个数据均为满足,则可能存在SQL注入。 这种数字型注入最多出现在ASP,PHP等弱类型中。
字符型注入
当输入的参数为字符串时,称为字符型。数字型与字符型最大的区别在于:数字型不需要单引号闭合,而字符串一般要使用单引号来闭合。
- 数字型例句
select *from table where id=1
- 字符型例句
select *from table where uername='admin'
字符型注入最关键的是如何闭合SQL语句以及注释多余的代码
数据库不同,字符串连接也不一样。
- SQL Server 连接符为"+"
- Oracle 连接符为"||"
- Mysql 了连接符为空格
一些常见的注入
- POST 注入:注入字段在 POST数据中
- Cookie注入:注入字段在Cookie中
- 延时注入:使用数据库延时特性注入
- 搜索注入:注入处为搜索的地点
- base64注入:注入字符需要经过base64加密
需要熟悉常见的数据库函数的用法