准备环境
win2003虚拟机 需要安装SQL Server2008
一、原理
注入产生的原因是接受相关参数未经处理直接带入数据库查询操作(注入攻击属于服务端的攻击,因为它攻击的是服务器里面的数据库,xss是客户端的攻击)
注入最终与数据库,与脚本、平台无关
二、or漏洞解析(判断有无注入点的办法:)
1.单引号
2. 1=1(-1=-1,3=3),有些把1=1或2=2加入黑名单了,但是咱们可以试试别的,如 3=3.-3=-3;
Name和 password 是没有经过任何处理,直接拿前端传入的数据,这样拼接的SQL会存在注入漏洞。(帐户:yuan 123)
现在我们来分析一下:'or 1=1--(--注释的意思)为什么能登录系统,原因有如下:
(1)、SELECT * FROM admin WHERE Name=''or 1=1 首先看这条查询语句,查询所有来自admin表的数据,条件name为空或者1=1,这两个条件只要一个满足就为真, Name=''or 1=1 现在1=1就是真而且是没任何作用的真,那么最终数据库执行的语句相当于 select * from Admin
(2)、因为Name值中输入了“--”注释符,后面语句被省略而登录成功。(常常的手法:前面加上'; ' (分号,用于结束前一条语句),后边加上'--' (用于注释后边的语句))
(3)、不同的程序万能密码也是不一样的,如ASP的万能密码是'or'='or' PHP的万能密码是'or 1=1/* (如果在登陆窗口输入错误的语法出现报错一般说明存在sql注入)详细请看: http://chengkers.lofter.com/post/14c64b_379726
三、找注入点:
也就是大型网站可能与数据库交互的地方:
1.登录的地方:用户名和密码一定是保存在数据库里面的
2.更新的地方:例如修改密码,一定会把密码带入到数据库中
3.注册账号的地方:账号密码都会保存在数据库中
4.留言板
注入可能出现在哪个地方:
http头、cookies、referee、user、agent、post提交数据包的地方等