• 【注入攻击】SQL注入(不完整总结)


    注入攻击

    数据与代码分离,可以说是专门为解决注入攻击而生的

    注入攻击的本质:用户输入的数据当作代码执行

    两个关键条件:一、用户能够控制输入;二、原本程序要执行的代码,拼接了用户输入的数据

    1 SQL注入

    典例:

    var ShipCity;

    ShipCity = Request.form(“ShipCity”);

    var sql = “select * from OrdersTable where ShipCity = ‘” + ShipCity + “’”;

    正常输入: Beijing

    select * from OrdersTable where ShipCity = ‘Beijing’;

    恶意输入: Beijing’; drop table OrdersTable--

    select * from OrdersTable where ShipCity = ‘Beijing’;drop table OrdesTable—’;

    SQL注入过程中,如果网站的Web服务器开启了错误回显,则会为攻击者提供极大的便利,比如攻击者在参数中输入一个单引号,引起执行查询语句的语法错误,服务器直接返回错误信息,那么我们就可能从错误信息中知道用的什么数据库,甚至版本、或者查询语句的构成。

    1.1  盲注(Blind Inject)       -----------------       应对服务器关闭了错误回显

    最常见的方法:构造简单的条件语句,根据返回页面是否发生变化,来判断SQL语句是否得到执行

    Example

    原始URL与SQL

    http://newspaper.com/items.php?id=2

     

    SELECT title,description,body FROM items WHERE ID=2

    条件判断

    http://newspaper.com/items.php?id=2 and 1=2

    http://newspaper.com/items.php?id=2 and 1=1

    1.2  Timing Attack

    MySQL中的BENCHMARK()函数:BENCHMARK(count, expr) <将EXPR执行COUNT次>

    利用BENCHMARK函数可让同一个函数执行若干次,使得返回的时间比平时要长;通过时间长短的变化,可以判断出注入语句是否执行成功。

    Example: 构造的攻击参数id为:

    1170 UNION SELECT IF(SUBSTRING(current,1,1)=CHAR(119),BENCHMARK(500000,ENCODE(‘MSF’,

    ‘by 5 seconds’ )),null) FROM (SELECT Database as current) as tbl;

    不同的数据库都有类似的函数:

    MySQL

    BENCHMARK(10000000,md5(1)) or SLEEP(5)

    PostgreSQL

    PG_SLEEP(5) or GENERATE_SERIES(1,1000000)

    MS SQL Server

    WAITFOR DELAY ‘0:0:5’

    2        数据库攻击技巧

    不同的数据库,SQL注入的技巧有所不同

    2.1  常见的攻击技巧

    如果Mysql的版本是4,则会返回TRUE

    http://www.site.com/news.php?id=5 and substring(@@version,1,1)=4

    id =5 union all select 1,2,3 from admin                     //确认表名admin是否存在

    id =5 union all select 1,2,passwd from admin          //确认admin表中pssswd是否存在

     

     

     

    2.2  命令执行

    2.3  攻击存储过程

    2.4  编码问题

    2.5  SQL Column Truncation

    3        正确地防御SQL注入

    3.1  使用预编译语句

    3.2  使用存储过程

    3.3  检查数据类型

    3.4  使用安全函数

    4        其他注入攻击

    4.1  XML注入

    4.2  代码注入

    4.3  CRLF注入

    5        小结

  • 相关阅读:
    functions文件详细分析和说明
    awk知识点总结
    sed修炼系列(四):sed中的疑难杂症
    sed修炼系列(三):sed高级应用之实现窗口滑动技术
    sed修炼系列(一):花拳绣腿之入门篇
    grep命令中文手册(info grep翻译)
    Linux comm命令求出文件的交集、差集
    黄聪:使用七牛上传视频调用视频播放器的推荐方案
    黄聪:主机宝安装wordpress注意事项
    黄聪:C#解析HTML DOM解析类 HtmlParser.Net 下载
  • 原文地址:https://www.cnblogs.com/sevensd/p/5502951.html
Copyright © 2020-2023  润新知