欢迎来到天天文库
浏览记录
ID:6140794
大小:38.00 KB
页数:2页
时间:2018-01-04
《sql深盲注入技术(deep blind sql injection)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、SQL深盲注入技术(DeepBlindSQLInjection)SQL深盲注入技术已在多篇文章中被描述.如果注入点是完全盲目的,那么提取数据库数据的唯一方法就是基于时间差的攻击,比如WAITFORDELAY,BENCHMARK等等.现在已知有2种方法来读取数据,1.逐字节读取数据2.在字符模式下通过二进制搜索算法来读取数据 这2种方法都有“一个请求-一个响应”的限制,并且平均每一个字符需要发送6个请求给服务器。在深盲SQL注入中读取数据比传统盲注更加复杂,但是,它仍然是有可能获取数据的,而且发送给服务器的请求数有可能会减少66%,因为获取每个字符只需要发送2次请求而
2、不是6次。 深盲SQL注入在MSSQL服务器上工作良好,也可能可以工作在其它数据库上,比如ORACLE,PostgreSQL等等。 这种一个请求收到多个响应的注入方式是基于时间差来完成的。例如,如果字符的前半字节是6,那么数据库将等待12秒,如果后半字节是1的话将等待2秒。攻击者应该储存服务器的响应次数并且把响应以每2次为单位进行分割来理解。结果,在2个请求中我们得到0x61,也就是'a'。很明显,根据情况使用比2更大或者更小的单位来分割响应信息也是可以的。实例对SQL服务器攻击的一个功能部分:程序代码程序代码DECLARE@xasint;DECLARE@wascha
3、r(6);SET@x=ASCII(SUBSTRING(master.dbo.fn_varbintohexstr(CAST({QUERY} asvarbinary(8000))),{POSITION},1));IF@x>97SET@x=@x-87ELSESET@x=@x-48;SET@w='0:0:'+CAST(@x*{SECONDS}aschar);WAITFORDELAY@w{QUERY}是你想获得的数据这些数据可以使变量比如USER,函数比如db_name(2)或者是返回一行和一列的Select声明。{POSITION}是欲读取的半字节。你需要添加2来替换SQL服务
4、器响应开始部分字串的“0x”。{SECONDS}是等待时间的乘数。等待时能以毫秒计,但是也可以使用分数计算比如等待延时'0:0:0.51'。相同的代码可以以不同的方式表达,有少许不同、更短但是更难读。程序代码程序代码DECLARE@xasint;DECLARE@waschar(6);SET@x=ASCII(SUBSTRING(master.dbo.fn_varbintohexstr(CAST({QUERY}asvarbinary(8000))),{POSITION},1));SET@w='0:0:'+CAST(((@x+((@x&79)/8)+(@x/64)&15)*2)
5、aschar);WAITFORDELAY@w实际攻击总的来说深盲SQL攻击还是不适合手动攻击,明智的做法是采用自动攻击,这些功能已经在“BSQLHacker”得以实现。限制• 如果连接时间太慢或者其它的原因导致服务器不可预知的响应次数,软件将不稳定• 大多数的服务器脚本和数据库连接都有大约30秒的连接超时限制(虽然对于使用2元2次乘法(?)来枚举一个半字节来说30秒钟已经足够,但是为了增加在其它环境中结果的稳定性,可能需要更长的超时限制,一般建议设置为60秒)
此文档下载收益归作者所有