SQL注入之手工注入


SQL注入從注入的手法或者工具上分類的話可以分為:  

  · 手工注入(手工來構造調試輸入payload)

  · 工具注入(使用工具,如sqlmap)

 

今天就給大家說一下手工注入:

  

手工注入流程

判斷注入點

注入的第一步是得判斷該處是否是一個注入點。或者說判斷此處是否有SQL注入漏洞。最簡單的判斷方法就是在正常的參數后加單引號 '。 id=1'

以看到數據庫報錯了,最重要的就是能夠看懂數據庫的錯誤信息,從錯誤信息中我們可以知道是單引號的匹配出了問題,也就是說我們添加的單引號成功被數據庫解析,那么我們就可以通過閉合這個id這個參數,然后插入自己構造的sql語句實施攻擊。我們按照步驟來,一般可以使用聯合表的方式來提取自己感興趣的信息(union),但是使用union語句有個前提就是union 后面的語句必須與前面的語句字段數以及類型必須一直,否則數據庫會報錯

如果頁面顯示了SQL的錯誤信息,進一步測試: id=1' or 1=1--+ 

再測試: id=de' and 1=2--+  ,基本確定注入存在

判斷查詢的字段數,使用order by number

輸入 order by 5

order by 4 均會報錯

可以看到order by 3的時候頁面顯示正常

確定回顯位

確定了查詢數據的位數,然后開始確定網頁的回顯位。回顯位就是確定查詢出來的數據是在網頁上面的哪個位置顯示出來。使用Union聯合查詢來確定回顯位。

獲取信息函數:

user() 獲取當前用戶用戶

 database() 獲取當前數據庫

version() 獲取數據庫版本

@@version_compile_os 獲取操作系統版本

 舉個例子(就不和大家一一解釋啦):

 

獲取數據庫里的數據

獲取所有的數據庫名:

 

獲取所有的表名:

獲取所有的列名:

我們就拿users這個表舉個例子吧

獲取數據:

單個數據取出

 

全部數據取出

 

總結:

一個手工的sql注入接班就是這樣,上面有什么錯誤,歡迎大家指出.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM