所谓SQL注入,就是把SQL命令插入到Web表单提交, 或输入域名, 或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的
具体来说,它是利用现有应用程序,将恶意的SQL命令注入到后台数据库引擎执行
它可以通过在Web表单中输入SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者的意图去执行SQL语句
举个例子,你要登录一个网站,上面让你输入用户名字和密码。
那么,假如你输入的用户名是 admin ,但是你不知道密码,你就输入了一个 1' OR '1' = '1
那么,你就提交了两个参数给服务器。
假如,服务器拿这两个参数拼SQL语句
SELECT T.* FROM XXX_TABLE T WHERE T.USER_ID = '/*param1*/'AND T.PASSWORD = '/*param2*/'
那么,你提交的两个参数就使SQL语句变成了
SELECT T.* FROM XXX_TABLE T WHERE T.USER_ID = 'admin' AND T.PASSWORD = '1' OR '1' = '1'
那么,这个SQL原来的校验功能就被你绕过去了,你的这种行为就称之为SQL注入
为了成功注入SQL命令,攻击者必须将开发者现有的sql命令转化成合法的sql语句,当然,要盲注总是有难度的,但一般都是
'OR1=1– 或者 ')OR1=1--
总结一下SQL注入的思路
SQL注入漏洞的判断,即寻找注入点
判断后台数据库类型
确定XP_CMDSHELL可执行情况;若当前连接数据的帐号具有SA权限, 且master.dbo.xp_cmdshell扩展存储过程(调用此存储过程可以直接使用操作系统的shell)能够正确执行,则整个计算机可以通过几种方法完全控制,也就完成了整个注入过程
否则继续
发现WEB虚拟目录
上传ASP木马
得到管理员权限
对SQL注入的防御方法
使用参数化的过滤性语句
避免出现详细的错误信息
使用专业的漏洞扫描工具
避免使用解释程序
在web应用程序开发过程的所有阶段实施代码的安全检查