• Wireshark数据包分析——时间盲注/延时注入攻击


    一、延时注入原理

    延时注入又称时间盲注,是属于SQL盲注的一种方法。在页面对SQL注入没有任何回显,或回显无差异时,可以使用时间盲注。

    盲注:在SQL注入时,SQL语句执行查询后,查询的数据不回显到页面,需要用一些特殊的方式来判断或者尝试,这个过程称为盲注。

    盲注一般分为三种:

    1.布尔盲注:页面返回对或错,存在或不存在来判断;
    2.时间盲注:通过页面是否执行延时判断;
    3.报错盲注:输入特殊语句使得页面报错,返回报错信息来判断。

    延时注入常用函数:

    • 让程序挂起,单位秒
    sleep(<seconds>)
    
    • 1
    • if语句
    if(<condition>,<true_expr>,<false_expr>)
    
    • 1

    语法:当condition为真时,返回true_expr,否则返回false_expr

    • 获取字符串长度
    length() 
    
    • 1

    常用:?id=1' and if((length(查询语句) =1), sleep(5), 3) -- a ,判断查询结果的长度,响应时间超过5s,表示判断正确,错误则继续增加查询长度

    • 截取字符串
    substr(string,num start,num length)
    
    • 1
    • 字符转换为ascii码值(用于判断字符内容,穷举32~126)
    ascii()
    
    • 1

    常见Payload:

    sleep(10)--
    benchmark(1000000000,md5(1))--
    pg_sleep(10)--
    ; WAITFOR DELAY 00:00:10;--
    ?id=1 and if(1,sleep(5),3) -- a 
    ?id=1' and if(1,sleep(5),3) -- a 
    ?id=1" and if(1,sleep(5),3) -- a
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    二、数据包分析

    ①打开数据包可以看到一个明显的POST请求;
    在这里插入图片描述

    ②选中该数据包,右键追踪流–>HTTP流,可看到一些关键字如ascii、substr、sleep:
    在这里插入图片描述

    ③可以看出,该文本的ASCII字符(如;/?@:&=+%$,等用于分隔URI组件的标点符号)均被编码,判断出使用了encodeURIComponent()函数,使用在线工具箱进行解码(https://www.sojson.com/encodeurl.html):
    在这里插入图片描述

    解码后发现请求语句中仍含有编码,则再次将结果解码:
    在这里插入图片描述

    ④可清晰的看到延时注入的语句:id=1) and if((ascii(substr((select flag from flag),1,1))=‘40’),sleep(3),0) – ,其中’40’对应ASCII左括号;
    ⑤此时便可用筛选器frame.time_delta>3&&http,筛选出延时大于3的包,进行后续分析,提取出所有的ASCII字符。
    在这里插入图片描述

  • 相关阅读:
    正则表达式二
    CCAA 常见错题集
    Dive into TensorFlow系列(2)- 解析TF核心抽象op算子
    day008
    js排序都有哪些方法?
    【SpringCloud】Gateway网关入门
    项目开发过程中,成员提离职,怎么办?
    测试老鸟告诉你,直击准备2024年初/高级测试技术面试...
    systemverilog学习 --- 随机化(1)
    一道数学题,让芯片巨头亏了5亿美金!
  • 原文地址:https://blog.csdn.net/Zhou_ZiZi/article/details/126486912