安全测试入门分享SQL注入

1.2011年12月22日,国内开发者社区CSDN遭到黑客攻击,其数据库中超过600万用户资料遭到泄露

2.2012年10月30日 即京东推出的积分充值活动在上述期间内,充话费、Q币等不会相应扣除积分,用户可以免费无限次充值。

安全性测试主要是测试系统在没有授权的内部或者外部用户对系统进行攻击或者恶意破坏时如何进行处理,是否仍能保证数据和页面的安全。


安全测试可能是最重要的,但它却常常是最容易被忽略的
Internet大众化、Web技术飞速演变、黑客工具日益普及的今天,针对Web的攻击和破坏不断增多,在线安全面临日益严峻的挑战,安全风险达到了前所未有的高度。
1.执行添加、删除、修改等动作中是否做过登录检测。
2.主要用于需要验证用户身份以及权限的页面,复制该页面的url地址,关闭该页面以后,查看是否可以直接进入该复制好的地址
3.注入式的漏洞
4.口令猜测(暴利破解)
5.目录权限 

6.业务上漏洞
7.cookie信息的存储

8.认证的安全性

9.文件的上传于下载

10.服务器信息收集等
安全测试面向web整个框架,包括Web 服务器、应用服务器、数据库服务器、程序设计等。 

我们在http://testasp.vulnweb.com/ 注册一个账号
SQL注入

    通常我们在用户登陆的时候,SQL语句如此写法:

$sql=select * from users where userName='$userName '

主要是用来检查这个用户是否存在,

如果说我在用户名一栏填上: 1=1 or 1='1'

那么sql语句就变成了:

select * from users where userName=1=1 or 1='1';

你填上去试试看?可以轻松绕过验证,同样密码在输入的时候也可以如此做法

在登陆时输入我们注册的用户名,密码输入:' or '1'='1
这就是简单的sql注入,现在一般纯正这么低级漏洞的网站很少。
我们针对上面的SQL语句分析,发现如果用下面的测试数据就能够进行SQL注入了 

SELECT * FROM Users WHERE Username='$username' AND Password='$password' 


$username = 1'or'1'='1 
$password=1'or'1'='1 


看看整个SQL查询语句变成: 

 

SELECT * FROM Users WHERE Username='1' OR '1'='1' AND Password='1'OR '1'='1' 

对上面的SQL语句作简单分析后我们就知道由于该语句永远为真,所以肯定会返回一些数据,在这种情况下实际上并未验证用户名和密码。从而达到sql注入。

 

注入事项


1.Web安全测试的执行,对于被测系统,或多或少都会存在一些影响(比如性能、垃圾数据),一般只在测试环境中进行;如果一定要在现网运行环境中执行,那么务必配置专门的测试数据,测试执行是应该非常慎重,只能修改或删除这些测试数据,禁止修改、删除现网其他数据。

2.发现弱点后不会去做深层的测试,如果去研究深层的东西花费时间成本太高,而且测试的效果不好,发现问题少。

3.安全测试,投入大,产出小,发现bug少。一般做起来非常困难。


相关标签:


评论: