最近公司项目被扫描出有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注入检测相关推荐

  1. Sqlmap查找SQL注入漏洞入门

    Sqlmap查找SQL注入漏洞入门 1.安装sqlmap sqlmap是一款非常强大的开源sql自动化注入工具,可以用来检测和利用sql注入漏洞.注意:sqlmap只是用来检测和利用sql注入点的,使 ...

  2. C#SQL注入检测——特别是对于旧版.NET代码

    目录 使用Decorator模式提供添加SQL注入检测的位置 SQL注入检测代码 究竟如何检测到SQL注入? SQLExtensions类中包含的格式化方法 自定义.NET异常类 用于检测SQL注入的 ...

  3. 基于AST抽象语法树的SQL注入检测 (2) -- 每周小结(01-02~01-08) - .Little Hann

    本周继续学习AST的SQL语法检测原理的学习,文章的接下来部分准备分为2部分进行学习: 1. SQL注入语法防御规则 2. druid中SQL注入防御模块sql-wall 1. 相关学习资料 http ...

  4. SQL注入检测模块开源项目DRUID-SQL-WALL学习小结

    作为sql注入原理.sql注入检测.防御系列学习的第三篇.本文主要关注了抽象语法树ast在sql注入检测上的应用开发.以及开源项目druid-sql-wall的学习,希望能给研究这一领域的朋友带来一点 ...

  5. 使用Python打造基本WEB漏洞扫描器(一) 网站爬虫+SQL注入检测

    一.实验介绍 扫描器需要实现功能的思维导图: 1.1 实验内容 编写一个简单的多线程爬虫,用于对网站地址进行爬取,编写一个简单的sql注入工具,用于对网站地址进行sql注入的检测. 1.2 实验知识点 ...

  6. sqlmap地表最强sql注入检测工具学习使用

    官网戳:https://sqlmap.org/ 带着问题去学习:假如有一个POST接口,传递的body是一个json, 我需要去检查这个json里面的一个字段有没有sql注入的可能,我使用sqlmap ...

  7. SqlMap自动化SQL注入测试工具简绍

    Sqlmap是一个开源的渗透测试工具,可以自动检测和利用SQL注入漏洞并接管数据库服务器.它配备了强大的检测引擎,为终极渗透测试仪提供了许多小众功能,以及从数据库指纹识别,从数据库获取数据到访问底层文 ...

  8. 自学渗透测试:使用 DVWA 和 SQLmap 探寻 SQL 注入攻击与防范

    数据来源 本文仅用于信息安全学习,请遵守相关法律法规,严禁用于非法途径.若观众因此作出任何危害网络安全的行为,后果自负,与本人无关. 01 耳熟能详的SQ注入是什么?     关于SQL注入漏洞,维基 ...

  9. sqlmap之sql注入原理利用

    一.什么是SQL注入? 所谓SQL注入,就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有的应用程序,将(恶意的) ...

  10. sqlmap 注入字典_使用sqlmap进行sql注入

    早就听说BT5sqlmap功能很强大,今天终于下决心拒绝DOTA和苍老师的诱惑,静下心来研究研究这个传说中的sqlmap!由于在虚拟机里面用的蛋疼,我直接在真机上也装了个BT5的系统,嘻嘻··,那感觉 ...

最新文章

  1. 2019年终总结:好好爱自己
  2. 同步等待 异步等待_异步/等待和承诺的解释
  3. 波士顿动力机器人逆天,人类已无法阻挡它的三级跳!
  4. celery中间件:broker
  5. 最新的ES 5.0路由算法底层实现
  6. 控件属性、事件持久化
  7. 七十七、 二叉树的层次遍历和最大深度
  8. tp5分布式redis_TP5通过缓存数据到Redis
  9. lambda :: -_无需再忙了:Lambda-S3缩略图,由SLAppForge Sigma钉牢!
  10. 两个用于Eclipse的TCK –开源到底有什么?
  11. C 标准IO 库函数与Unbuffered IO函数
  12. static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?...
  13. Spring boot 2.4开启静态资源缓存
  14. RAC动态资源(DRM)管理介绍
  15. 人力资源管理书籍排行榜,HR必读的十本书推荐
  16. 网站渗透零基础教程 渗透测试工程师养成之路
  17. 信安软考 第十四章 恶意代码防范技术原理
  18. 模拟银行排队叫号机 2011.04.18
  19. Python数据分析(二) —— 进阶绘制双折线图
  20. 解决联想小新笔记本电脑触摸板失灵

热门文章

  1. Netty实战《原理》
  2. grandMA2onPC控制UE4灯光
  3. 大学群管机器人的建设畅想
  4. #深度解析# GAN(生成对抗神经网络)
  5. mac如何配置环境变量
  6. testbed常见问题及处理(2)
  7. matlab生成非方阵的范德蒙矩阵
  8. Nginx(五)------搭建静态资源服务器
  9. Socket服务器分类与流程总结
  10. socket通信过程