美文网首页
【安全】SQL注入-Timing Attack

【安全】SQL注入-Timing Attack

作者: 大婶N72 | 来源:发表于2019-04-02 00:20 被阅读0次

    真正的稳定,是自己不断成长,不断寻找新的空间。与其要稳定,不如开始拥抱这个变化的时代,让自己准备好。

    写在前面

        注入攻击的本质-把用户输入的数据当做代码执行。关键条件是:用户能控制输入;原本程序要执行的代码,拼接了用户输入的数据。

    WHAT - 什么是Timing Attack

        从字面单词组合理解来说,就是时间攻击,其实质是通过每次执行SQL的耗时来判断是否存在SQL注入漏洞,听起来不可思议,例如下面的例子:

    UNION SELECT IF (SUBSTRING(current,1,1) = CHAR(97),BENCHMARK(5000000, md5( 'test' )),null) FROM (SELECT DATABASE() as current) as tb;
    

    备注:
        该段SQL语句通过对结果时间的比较,来判断数据库名称的首字母是不是a,这样逐步判断就能猜出数据库名称。

    HOW- Timing Attack中关键知识点

        1.BENCHMARK(count,expr) 函数执行的结果是将表达式expr执行count次,比如:
    select benchmark( 5000000, md5( 'test' ) ); 返回结果是0,耗时1.157秒。

        2.SELECT if(expr1,expr2,expr3) 如果expr1的结果是TRUE,则返回expr2,否则返回expr3。

        3.SELECT database() as db; 获取当前连接的数据库名。其他函数比如system_user()获取当前系统用户,current_user()获取当前登录用户;last_insert_id()获取最后一次插入操作的事物ID。

        4. substring(str, pos, len) 返回字符串str,从pos位置开始,长度为len的字符串,注意这里起始值是1,比如
    select substring('example.com', 4, 2); 结果是mp。

        5.UNION 连表查询,得到结果的去重结果,如果不去重,则使用UNION ALL。

    相关文章

      网友评论

          本文标题:【安全】SQL注入-Timing Attack

          本文链接:https://www.haomeiwen.com/subject/yfmibqtx.html