怎样屏蔽 vba连接sql时 sql错误提示_安全测试——SQL注入

SQL注入是Web系统安全攻击的常见手段,攻击者通过构建特殊的输入或非法的SQL命令插入表单或页面请求的字符串中后提交,从而达到利用服务器执行恶意SQL语句的目的。SQL注入攻击成功后,可直接屏蔽服务器验证,获取访问权限,甚至获取服务器的最高权限,执行篡改记录等恶意行为。

容易被实施SQL注入的主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

SQL注入根据注入技术原理的不同,一般分为数据库平台注入和程序代码注入。数据库平台SQL注入由Web系统使用的数据库平台配置不安全或平台本身存在漏洞引发;程序代码注入则主要是由于开发人员在设计时,未能考虑细致及编码时错误实现,从而导致攻击者轻易利用此缺陷,执行非法数据查询。

SQL注入的产生原因通常有以下几个:

(1)不恰当的数据类型处理;

(2)不安全的数据库配置;

(3)不合理的查询处理;

(4)不当的错误处理;

(5)不合适的转义字符处理;

(6)不恰当的请求处理。

SQL注入的方法一般有猜测法攻击及屏蔽法,猜测法主要是通过猜测数据库可能存在的表及列,根据组合的SQL语句获取表信息。屏蔽法主要是利用SQL输入值不严谨错误进行逻辑验证,从而使得SQL验证结果始终为真,达到绕开验证的目的。

01.猜测法

在Web系统的日常测试工作中,经常接触如下的URL请求语句。

http://www.test.com?empid=123

上述URL表示请求了test系统中empid=123的数据信息,“?empid=123”正是提交数据库服务器的查询参数,此时,可在URL地址嵌入SQL恶意攻击语句。例如:

http://www.test.com?empid=123'or'1'='1

这样可列出所有的数据信息,如果需要猜测对应的表名,还可写成:

http://www.test.com?empid=123'or 1=(select count(*) from emp)--

如果不存在该表,则可能会报错,说明emp对象名无效,并可告知是哪种数据库类型,然后根据不同的数据库类型,使用对应的系统表名称进行查询攻击。

【案例1 商品浏览SQL注入测试】

ECShop某个商品的URL地址为:

http://192.168.0.105/ecshop/goods.php?id=64

利用猜测法构造注入URL,如:

http://192.168.0.105/ecshop/goods.php?id=64 'or 1=(select count(*) from goods)--

回车访问后,出现图1,该信息表明ECShop已经进行了该种注入类型的预防。

8a8265cd3f23be8fbda3c2a61b95c6d9.png

图1 猜测法注入SQL提示界面

02.屏蔽法

屏蔽法一般利用SQL语句AND和OR运算符进行攻击,以登陆功能为例,通常登陆SQL验证语句如下。

select * from users where username = '$username' and password = '$password'

在实际攻击过程中,将用户名username和密码password输入为:a' or 1=1,这样SQL语句则变成:

select * from users where username='a' or 1=1 and password='a' or 1=1

“AND”执行优先级高于“OR”,因此先执行1=1 and password='a',执行结果为假,username='a'也为假,但1=1为真,因此整个SQL语句的执行结果为真,可成功绕开验证登陆系统。

当然在实际的使用过程中,SQL注入可能比上述的方法更为复杂,需开发人员在设编码时尽可能防范此类攻击方法。

【案例2 用户登陆功能SQL注入测试】

以ECShop注册用户登陆功能为例,用户名输入“a' or 1=1”,密码输入正确,进行SQL屏蔽法攻击,系统提示“用户名或密码错误”,表示系统已经做了防范。

3a97fd96b296e1ef60baa5128ea12c7b.png

图2 用户登陆SQL屏蔽法测试

AppScan测试结果显示ECShop中不存在SQL注入方面的缺陷。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值