
*****
## sqlmap注入參數
### sqlmap強制設置DBMS
默認情況下sqlmap會自動識別探測目標web應用程序的后端數據庫管理系統(DBMS),sqlmap支持 的DBMS種類
- MySQL
- Oracle
- PostgreSQL
- Microsoft SQL Server
- Microsoft Access
- Firebird
- SQLite
- Sybase
- SAP MaxDB
- DB2
可以指定數據庫來進行探測
參數 --dbms 數據庫類型
### sqlmap強制設置OS系統
默認情況下sqlmap會自動探測目標web應用程序的后端操作系統,sqlmap完全支持的OS種類Linux、 Windows
參數 --os 系統類型
### Sqlmap強制設置無效值替換
參數:--invalid-bignum
在sqlmap需要使原始參數值無效(例如id=13)時,它使用經典的否定(例如id=-13)。
有了這個參數,就可以強制使用大整數值來實現相同的目標(例如id=99999999)。
```
python sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=1" --invalid-bignum --banner
```
參數:--invalid-logical
有了這個參數,就可以強制使用布爾操作來實現相同的目標(例如id=13 and18=19)。
參數:--invalid-string
有了這個參數,就可以強制使用隨機字符串來實現相同的目標(例如id=akewmc)。
### Sqlmap自定義注入負載位置
在某些情況下,只有當用戶提供要附加到注入負載的特定后綴時,易受攻擊的參數才可被利用。當用戶已經知道查詢語法并希望通過直接提供注入有效負載前綴和后綴來檢測和利用SQL注入時,這些選項就派上用場了。
--prefix 設置SQL注入Payload前綴
--suffix 設置SQL注入Payload后綴
```
$query = "SELECT * FROM users WHERE id=('.$_GET['id'].') LIMIT 0, 1";
python sqlmap.py -u "http://ip/sqlmap/mysql/get_str_brackets.php\
?id=1" -p id --prefix "')" --suffix " AND ('abc'='abc"
$query = "SELECT * FROM users WHERE id=('1') <PAYLOAD> AND ('abc'='abc') LIMIT 0, 1";
```
### Sqlmap設置Tamper腳本
sqlmap本身不會混淆發送的有效負載,除了單引號之間的字符串被CHAR()類似的表示形式所取代之外。sqlmap通過Tamper腳本來繞過WAF等防御措施,可以在tamper文件夾下找到所有sqlmap自帶的tamper腳本。
```
python sqlmap.py -u "http://ip/sqlmap/mysql/get_int.php?id=1" --tamper "between.py,randomcase.py,space2comment.py" -v 3
```
### Sqlmap設置DBMS認證
設置DBMS認證方式通過以下命令:
--dbms-cred = username:password
```
python sqlmap.py -u "http://127.0.0.1/sqli/Less-3/?id=1" --dbms-cred = "root:root" --banner
```