前置技能
1.了解SQL语言、语法、操作、常用函数(基本的SQL数据库操作是进行SQL注入攻击的基础)2.了解PHP语言,以及PHP+SQL的常用组合操作
1.什么是SQL注入
所谓SQL注入,就是通过把SQL命令插入到 Web表单提交 或 URL 或 页面请求等的查询字符串中,最终达到欺骗服务器执行恶意的SQL命令。
注:从这句话看出常见的注入点在
a. web表单
b. URL链接中
c. 登录框(页面请求查询)
2.SQL注入原理
SQL注入(SQLInjection)是这样一种漏洞:当我们的Web app 在向后台数据库传递SQL语句进行数据库操作时。如果对用户输入的参数没有经过严格的过滤处理,那么攻击者就可以构造特殊的SQL语句,直接输入数据库引擎执行存在注入点的网站,获取或修改数据库中的数据。
SQL注入漏洞的本质是把用户输入的数据当做代码来执行,违背了“数据与代码分离”的原则。
SQL注入漏洞有两个关键条件,理解这两个条件可以帮助我们理解并防御SQL注入漏洞:
我们以DVWA漏洞演示环境举列子
我们在输入框中输入1,点击submit,页面返回如图红框中数据。
这里有经验的渗透老司机就知道,是web应用查询了数据库,获取了useid为1的数据。
这里我们大胆猜测一下这里的SQL语句长什么样子呢
select Firstname, sunname from XXX where userid= 我们输入的ID
当我们在输入框中输入1时sql语句为:
select Firstname, sunname from XXX where userid= ‘1’
由回显数据我们得到Id为1的firstname,sunname的字段内容
但是当我们在输入框中输入如下内容时
1′ union select 1,database()%23(‘%23’为’#’的url编码存在注入点的网站,’#’为mysql注释符,注释掉后面的语句)
此时执行的数据库命令是:
select Firstname, sunname from XXX where userid= ‘1’ union select 1,databsae()#
不仅可以得到id为1的firstname,sunname字段内容,还可以得到当前数据库名
这样如果攻击者构造更多的SQL语句,哪么数据库里的信息都会被攻击者得到,造成数据泄露。
3.SQL注入的产生
4.SQL注入的作用
5.常见的SQL注入分类
A.按照数据库执行结果是否显示到页面上分类
a.SQL回显注入(数据库的执行结果直接显示到页面上)
SQL回显注入又可以分为:
01:union联合查询注入
02:报错注入
b.SQL盲住(不显示到页面上)
SQL 盲住又可以分为:
01:布尔盲住
02:时间注入
B.按照注入点类型来分类
C.按照数据提交的方式来分类
本文到此结束,希望对大家有所帮助!