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

一、延时注入原理

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

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

盲注一般分为三种:

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

延时注入常用函数:

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

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

  • 获取字符串长度
length() 

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

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

常见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

二、数据包分析

①打开数据包可以看到一个明显的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字符。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Zhou_ZiZi/article/details/126486912