![](https://img.kancloud.cn/41/e0/41e066af9a6c25a24868d9667253ec98_1241x333.jpg)
*****
## 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
```