SQL盲注(2)
阿新 • • 發佈:2018-11-29
時間延遲
測試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