zoukankan      html  css  js  c++  java
  • SQL注入攻击技术(一)--原理解析

    准备环境

    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提交数据包的地方等

  • 相关阅读:
    idea 控制到不能输出中文
    后台学习
    carthage和cocoapods
    如何优雅地调试
    从一次内存峰值说起
    多线程单线程,同步异步,并发并行,串行队列并行队列,看这里就对了
    iOS网络层设计感想
    iOS团队风格的统一
    AFNetworking二次封装的那些事
    UITextFiled,UITextView长度限制
  • 原文地址:https://www.cnblogs.com/1996-11-01-614lb/p/14192997.html
Copyright © 2011-2022 走看看