使用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 初学者的简单向导界面
使用sqlmap进行SQL注入检测相关推荐
- Sqlmap查找SQL注入漏洞入门
Sqlmap查找SQL注入漏洞入门 1.安装sqlmap sqlmap是一款非常强大的开源sql自动化注入工具,可以用来检测和利用sql注入漏洞.注意:sqlmap只是用来检测和利用sql注入点的,使 ...
- C#SQL注入检测——特别是对于旧版.NET代码
目录 使用Decorator模式提供添加SQL注入检测的位置 SQL注入检测代码 究竟如何检测到SQL注入? SQLExtensions类中包含的格式化方法 自定义.NET异常类 用于检测SQL注入的 ...
- 基于AST抽象语法树的SQL注入检测 (2) -- 每周小结(01-02~01-08) - .Little Hann
本周继续学习AST的SQL语法检测原理的学习,文章的接下来部分准备分为2部分进行学习: 1. SQL注入语法防御规则 2. druid中SQL注入防御模块sql-wall 1. 相关学习资料 http ...
- SQL注入检测模块开源项目DRUID-SQL-WALL学习小结
作为sql注入原理.sql注入检测.防御系列学习的第三篇.本文主要关注了抽象语法树ast在sql注入检测上的应用开发.以及开源项目druid-sql-wall的学习,希望能给研究这一领域的朋友带来一点 ...
- 使用Python打造基本WEB漏洞扫描器(一) 网站爬虫+SQL注入检测
一.实验介绍 扫描器需要实现功能的思维导图: 1.1 实验内容 编写一个简单的多线程爬虫,用于对网站地址进行爬取,编写一个简单的sql注入工具,用于对网站地址进行sql注入的检测. 1.2 实验知识点 ...
- sqlmap地表最强sql注入检测工具学习使用
官网戳:https://sqlmap.org/ 带着问题去学习:假如有一个POST接口,传递的body是一个json, 我需要去检查这个json里面的一个字段有没有sql注入的可能,我使用sqlmap ...
- SqlMap自动化SQL注入测试工具简绍
Sqlmap是一个开源的渗透测试工具,可以自动检测和利用SQL注入漏洞并接管数据库服务器.它配备了强大的检测引擎,为终极渗透测试仪提供了许多小众功能,以及从数据库指纹识别,从数据库获取数据到访问底层文 ...
- 自学渗透测试:使用 DVWA 和 SQLmap 探寻 SQL 注入攻击与防范
数据来源 本文仅用于信息安全学习,请遵守相关法律法规,严禁用于非法途径.若观众因此作出任何危害网络安全的行为,后果自负,与本人无关. 01 耳熟能详的SQ注入是什么? 关于SQL注入漏洞,维基 ...
- sqlmap之sql注入原理利用
一.什么是SQL注入? 所谓SQL注入,就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有的应用程序,将(恶意的) ...
- sqlmap 注入字典_使用sqlmap进行sql注入
早就听说BT5sqlmap功能很强大,今天终于下决心拒绝DOTA和苍老师的诱惑,静下心来研究研究这个传说中的sqlmap!由于在虚拟机里面用的蛋疼,我直接在真机上也装了个BT5的系统,嘻嘻··,那感觉 ...
最新文章
- 2019年终总结:好好爱自己
- 同步等待 异步等待_异步/等待和承诺的解释
- 波士顿动力机器人逆天,人类已无法阻挡它的三级跳!
- celery中间件:broker
- 最新的ES 5.0路由算法底层实现
- 控件属性、事件持久化
- 七十七、 二叉树的层次遍历和最大深度
- tp5分布式redis_TP5通过缓存数据到Redis
- lambda :: -_无需再忙了:Lambda-S3缩略图,由SLAppForge Sigma钉牢!
- 两个用于Eclipse的TCK –开源到底有什么?
- C 标准IO 库函数与Unbuffered IO函数
- static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?...
- Spring boot 2.4开启静态资源缓存
- RAC动态资源(DRM)管理介绍
- 人力资源管理书籍排行榜,HR必读的十本书推荐
- 网站渗透零基础教程 渗透测试工程师养成之路
- 信安软考 第十四章 恶意代码防范技术原理
- 模拟银行排队叫号机 2011.04.18
- Python数据分析(二) —— 进阶绘制双折线图
- 解决联想小新笔记本电脑触摸板失灵