測試sql注入的字元型別:
若輸入1時的結果:
輸入1' and '1'=1時,結果:
輸入1' and '1'='2時,結果:
則為字元型,可對其進行sql注入
確定字元型後,可以對mysql資料庫中的某些資料進行查詢,甚至在許可權較高時可以修改資料庫的內容,以下為讀取資料庫名稱的注入(1' union select 1,database() #)
可以看到在返回值中,資料庫的名稱為「dvwa」,可以根據需要採用不同的sql語句查詢
對於不能直接在表單輸入內容,以及能對特殊字元進行過濾的表單,可以使用burpsuite等抓包工具抓包,對抓包後請求資訊修改後放行即可繞過
修改後顯示的結果:
還要注意對單引號(')進行轉義,如果依舊不能進行可以通過結尾新增#注釋掉後面的語句進行嘗試
但如果表單的返回資訊只有是否兩種型別時,就不能依靠盲注的方式了,盲注最簡單的方式就是通過猜,比如資料庫的長度,之後依靠二分法測試每個字元;
除此之外還可以通過工具的幫助進行盲注,比如使用sqlmap:
輸入(python sqlmap.py -u "http://localhost:8066/dvwa-master/vulnerabilities/sqli_blind/?id=1&submit=submit#" --cookie="security=low; phpsessid=ee0v1po7g8sduohu10ptjp3fu2" --dbs --batch)
顯示:
顯示了一些版本資訊等,還有下圖中的包含資料庫名稱
當然這只是一些簡單的,複雜的注入,可能需要專用的指令碼等,這就需要我近一步的學習了。
還有,聽了前輩的一句話感覺很有道理,任何漏洞都要切實修復,不要因為有其他防護軟體的保護就鬆懈,系統是乙個相關性極高的東西,乙個單獨微小的漏洞可能和其他漏洞共同造成極大的隱患,只有將及時將發現的漏洞修復才能使系統最安全。
mysql 防止注入 mysql如何防止sql注入
mysql防止sql注入的方法 1 普通使用者與系統管理員使用者的許可權要嚴格地區分開 2 強迫使用者使用引數化語句 3 盡量使用sql server資料庫自帶的安全引數 4 對使用者輸入的內容進行驗證。sql injection攻擊具有很大的危害,攻擊者可以利用它讀取 修改或者刪除資料庫內的資料,...
mysql中文注入 mysql如何防止sql注入
mysql防止sql注入的方法 1 普通使用者與系統管理員使用者的許可權要嚴格地區分開 2 強迫使用者使用引數化語句 3 盡量使用sql server資料庫自帶的安全引數 4 對使用者輸入的內容進行驗證。sql injection攻擊具有很大的危害,攻擊者可以利用它讀取 修改或者刪除資料庫內的資料,...
SQL注入和Mybatis預編譯防止SQL注入
所謂sql注入,就是通過把sql命令插入到web表單提交或頁面請求url的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。具體來說,它是利用現有應用程式,將 惡意 的sql命令注入到後台資料庫引擎執行的能力,它可以通過在web表單中輸入 惡意 sql語句得到乙個存在安全漏洞的 上的資料庫,而不是按...