zoukankan      html  css  js  c++  java
  • sql注入攻击与防御第二版读书笔记二——SQL注入测试

    寻找SQL注入

    该阶段的主要目标是识别服务器响应中的异常并确定是否由SQL注入漏洞产生,随后确定在服务器端运行的SQL查询的类型(select,update,insert或delete),以及将攻击代码注入查询中的位置(比如from,where或者order by等)

    我们需要关注:get,post,cookie,host,referer,useragent。

    理解并利用SQL注入漏洞所涉及的主要技术包括:在心里重建开发人员在Web应用中编写的代码以及设想远程SQL代码的内容。如果能想象出服务器正在执行的代码,就可以很明确的知道在哪里终止单引号以及从哪里开始添加单引号。

    操纵参数

    将参数改为应用未预料的值

    添加单引号(')

    将字符串或数字等价替换 例如:mysql中:bike 与 bi' 'ke等价 在SQL Server中 bike与bi'+'ke等价 数字则用大数减小数 如果结果一样 就可能有注入

    将字符串改成数字,或者反之

    用and,or进行进一步确认

    数据库错误

    当用户请求触发数据库错误时,可能有以下几种反应

    将SQL错误显示在页面上,它对Web浏览器用户可见。

    将SQL错误隐藏在Web页面源代码中以便调试

    检测到错误时跳转到另一个页面

    返回HTTP错误代码500(内部服务器错误)或者HTTP重定向代码302

    应用适当的处理错误但不显示结果,可能会显示一个通用的错误页面

    SQL盲注

    攻击者可以操纵SQL语句,应用会针对真假条件返回不同的值,但是攻击者无法检索查询结果。

    内联SQL注入

    数字或字符串等价替换

    用 and or 测试

    终止式SQL注入

    注释字符

    SQL Server ,Oracle,PostgreSQL  --(单行注释) /* */(多行注释)

    MySQL -- (后接空格 单行注释)  #(单行注释) /* */(多行注释)

    执行多条语句

    SQL Server 6.0后的所有版本支持且允许执行下列语句:

    select foo from bar; select foo2 from bar2;

    MySQL4.1后也引入了该功能,但它在默认情况下并不支持该功能。

    Oracle不支持多条语句。

    时间延迟

    SQL Server  ;waitfor delay '0:0:5';--

    MySQL benchmark(1000000,encode('hello','mom'))

  • 相关阅读:
    Codeforces Round #281 (Div. 2) A. Vasya and Football(模拟)
    自动生成代码工具
    导入导出维护计划
    收集错误日志方法
    C#常用控件和属性
    人民币转换
    身份证验证
    设置下拉列表项的默认值
    清除维护任务
    清除MSSQL历史记录
  • 原文地址:https://www.cnblogs.com/yiruhua/p/5844879.html
Copyright © 2011-2022 走看看