使用sqlmap进行SQL注入检测

最近公司项目被扫描出有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中,要注意如果我们获取到的数据中有加密的,会默认进行暴力破解,所以会有些慢。

使用文件进行漏洞测试

有时候我们测试的接口需要登录才能进行测试,我们可以通过--cookie=COOKIE来添加cookie进行测试,还有一种最简单的方法 我们可以首先用浏览器进入到测试系统,然后F12查看我们的请求

在请求进行右键,选择COPY里面的copy request headers ,之后将复制内容保存到文件中(如a.txt)

 

可以看到若是post请求,我们是没赋值body的,因此还需要进行参数的添加,我们可以通过copy as cUrl(cmd) 从中抽出其中的body,然后以参数1=值1&参数2=值2的方式拼接到请求上。

 

之后利用使用如下语句进行测试即可

python sqlmap.py -r a.txt --batch --level 3

结语

至此,对于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强制到此值

-r 文件名 使用指定文件的请求来进行测试

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

--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            初学者的简单向导界面

  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值