sql注入攻击原理以及实战介绍

今天咱们来介绍一下SQL注入测试。在对SQL注入攻击的分析中,咱们越来越多的目的是学习攻击技术和防护策略,而不是故意攻击数据库。首先咱们键入测试地址“SQL注入”。


SQL注入是1种代码注入技术,用以攻击数据驱动的应用程序。SQL注入的本质是将恶意的SQL代码注入特定的字段进行库拖攻击。SQL注入的成功必须依赖于应用程序的安全漏洞。例如,当用户键入没有被正确过滤(对于某些特定的字符串数组)或者类型没有被特别强调时,很容易异常地执行SQL语句。SQL注入是网站渗透测试中最常见的攻击技术,但事实上SQL注入能够用来攻击全部的SQL数据库。Sql注入的直接原因是拼凑SQL。大部分程序员在做开发的时候,并不关注最终如何运行SQL,更不关注SQL执行的安全性。正是这个懒惰的程序员让SQL注入不至于消失。这种漏洞不是不可避免的,只是程序员没有这种安全意识。


至于注入漏洞,现在很多人认为已经过时了,因为这个漏洞能够通过参数化查询消除。过去,有三种主要方法来抵御此漏洞:

字符串数组检查:限制内容只可以是英文、数字等基本字符串。要是检查到用户键入有特殊符号,会直接拒绝接受。但缺陷是系统中的某些内容不可避免的包含特殊符号,所以此时不能拒绝接受入库。


字符串替换:用其他字符串替换危险字符串的缺陷是危险字符串可能很多,一一枚举替换比较麻烦。存储过程:参数被传递给存储过程进行处理,但不是所有的数据库都支持存储过程。要是存储过程中执行的命令也是串连字符串数组产生的,那么还是会有漏洞的。

咱们来练习一下。比较好理解。


先一起来看看SQL注入测试的大致思路。

(1)找到注射并确认(and 1=1和1=2)

(2)查询基本信息(数据库类型、数据库名称、应用类型和系统类型)

(3)查找表名和字段名,得到想要查询的内容。


首先,咱们一起来看看源代码。这是由该sql查询语句引起的最常见的SQL注入。咱们继续测试,这次用的是awvs,咱们登录awvs,在SQLInjection下选取难度,选取low。sql注入的第1步是测试是不是存有sql注入漏洞。当ID等于1时,能够正常显示。网站首页直接在这儿返回,和and1=1返回的网页页面不同。这里有SQL注入。为什么判断sql已经注入?基本原理是把测试语句带入数据库查询,是逻辑函数,1=1为真,1=2为假,所以返回的不同。好了,咱们来看第二步判断场次。orderby2返回正常,orderby3返回异常。

分享: