SQLMap使用指北
简介
sqlmap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。
安装
网上太多,不再赘述
支持的五种注入模式
基于布尔的盲注,即可以根据返回页面判断条件真假的注入
基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断
基于报错的注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中
联合查询注入,可以使用union的情况下的注入
堆查询注入,可以同时执行多条语句的执行时的注入
支持的数据库
MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB
sqlmap执行流程
判断可注入的参数
判断可以用哪种SQL注入技术来注入
识别出数据库类型
根据用户的输入,选择相应数据的读取
基础使用
sqlmap中很多的命令在实际应用中我们并不会用到,没有必要花大部分的时间去记下一堆不用就会忘记的命令,该部分列举了一些常用的命令
输出等级 -v
如果你想要观察sqlmap对一个可能的注入点进行了怎样的尝试判断以及读取数据的,可以使用 -v 参数,一共分为7个等级,默认为1,初学sql注入的话可以指定为-v 3 等级,这样会给出payload,方便学习
0:只显示 Python 的 tracebacks 信息、错误信息 [ERROR] 和关键信息 [CRITICAL];
1:同时显示普通信息 [INFO] 和警告信息 [WARNING];
2:同时显示调试信息 [DEBUG];
3:同时显示注入使用的攻击荷载;
4:同时显示 HTTP 请求;
5:同时显示 HTTP 响应头;
6:同时显示 HTTP 响应体。
指定目标 -u 或 --url
使用参数 -u 或者 --url 指定一个URL作为目标,该参数后跟一个表示URL的字符串,可以是http协议也可以是https协议,也可以指定端口
举例
sqlmap.py -u http://testphp.vulnweb.com/comment.php?aid=1
查看下载数据库数据:
sqlmap -u "url" --dbs //获取该url对应数据库的名称
sqlmap -u "url" --tables -D "database" //database这个数据库的表数据表 sqlmap -u "url" --columns -T "tables" -D "database" //查看tables这个数据表的字段 sqlmap -u "url" --dump "a,b,c" -C "columns" -T "tables" -D "database" //下载内容,后面的-CTDabc都是对下载的数据库表段的约束如果不加就是下载所有
指定多个URL -m
参数 -u 一次只能指定一个URL,若有多个URL需要测试就显得很不方便,我们可以将多个URL以一行一个的格式保存在文本文件中,然后使用参数 -m ,参数 -m 后跟该文本文件路径,让SQLMap依次读取文件中的URL作为攻击目标
从文件载入HTTP请求 -r
可以将一个HTTP请求保存在文件中,然后使用参数 -r 加载该文件,SQLMap会解析该文件,从该文件分析目标并进行测试
很多时候是使用BurpSuite对HTTP请求进行抓包并保存,然后使用 -r 参数读取文件进行注入,使用 -p 参数进行注入参数的指定
举个例子:
sqlmap.py -r "post.txt" -p "username" --dbs
将Google搜索结果作为攻击目标 -g
SQLMap能自动获取Google搜索的前一百个结果,对其中有GET参数的URL进行注入测试,当然因为某些众所周知的原因,你需要能够先翻越伟大的长城,在sqlmap手册中 -g 参数的例子为:
python sqlmap.py -g "inurl:\".php?id=1\""
进阶用法
进阶用法比之前的基础用法要高级一丢丢
列出数据库用户名和密码
--users 列出所有数据库用户,当前用户有权限读取包含所有用户的表权限时,就可以列出所有管理用户
--password 数据库密码,当前用户有权限读取包含用户密码的权限时,sqlmap会先列举出用户,然后列出hash,并且尝试破解
显示网站当前信息
--current-db 网站当前数据库
--current-user 当前数据库用户
指定代理
--proxy http://local:8080
指定代理进行网站注入,使用HTTP代理链接到目标URL,在防火墙会BAN的情况下使用
构造随机请求头 user-agent
--random-agent 构造随机user-agent
检查用户权限
--is-dbs 当前用户权限(是否为root),是的话会返回True
设置延迟注入的时间
--time-sec=xxx
当使用基于时间的盲注时,可指定响应的延迟时间(默认为5秒)
设置请求并发量
--threads=THREADS
最大的HTTP(S) 请求并发量(默认为1)
写入文件
条件:
1,需要有网站的物理路径,可以通过phpinfo探针,或者网站报错等方式获取
2,需要有可读或可写权限
--file-read=RFILE 从后端的数据库管理系统文件系统读取文件(物理路径)
--file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件
--file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径
举例如:
sqlmap -r "c:\request.txt" -p id –dbms mysql –file-dest "e:\php\htdocs\dvwa\inc\include\1.php" –file-write "f:\webshell\1112.php"
获取表中数据个数
--count xxx
有时候用户只想获取表中数据个数而不是具体的内容,那么可以使用这个参数
适用场景在HW的过程中,不允许拖数据又要知道数据量来拿分
HTTP请求之间添加延迟
--delay xxx
过于频繁地发送请求可能会被网站察觉或者有其他不良后果,使用参数 --delay 来指定HTTP请求之间的延迟,单位为秒,类型是浮点数,如
--delay 1.5 表示延迟1.5秒,默认是没有延迟的
修改注入数据
--tamper
除了使用CHAR()编码字符串外SQLMap没有对payload进行任何混淆。
该参数用于对payload进行混淆以绕过IPS或WAF
若使用的tamper脚本位于sqlmap的安装目录的tamper/目录中,那么可以省略路径和后缀名,只写文件名
多个tamper脚本之间使用空格隔开
在tamper/目录中有很多可用的tamper脚本,我们也可以自己编写属于自己的tamper脚本,这属于sqlmap的高级用法
关于tamper的详细介绍,有:
执行任意操作系统命令
--os-cmd 和 --os-shell
1.sqlmap -u http://url --os-shell
//或者windows可以用--os-cmd 或--sql-shell
2.选择网站服务端语言
3.填写网站根目录C:/www/
暂时先写这些趴,后面有啥要补充的再更新
参考链接:
SQLMap使用指北的更多相关文章
- git宝典—应付日常工作使用足够的指北手册
最近公司gitlab又迁移,一堆git的命令骚操作,然鹅git命令,感觉还是得复习下——其实,git现在界面操作工具蛮多,比如intellij 自带的git操作插件就不错,gitlab github ...
- Python 简单入门指北(二)
Python 简单入门指北(二) 2 函数 2.1 函数是一等公民 一等公民指的是 Python 的函数能够动态创建,能赋值给别的变量,能作为参传给函数,也能作为函数的返回值.总而言之,函数和普通变量 ...
- Python 简单入门指北(一)
Python 简单入门指北(一) Python 是一门非常容易上手的语言,通过查阅资料和教程,也许一晚上就能写出一个简单的爬虫.但 Python 也是一门很难精通的语言,因为简洁的语法背后隐藏了许多黑 ...
- 可能比文档还详细--VueRouter完全指北
可能比文档还详细--VueRouter完全指北 前言 关于标题,应该算不上是标题党,因为内容真的很多很长很全面.主要是在官网的基础上又详细总结,举例了很多东西.确保所有新人都能理解!所以实际上很多东西 ...
- 关于supervisor的入门指北
关于supervisor的入门指北 在目前这个时间点(2017/07/25),supervisor还是仅支持python2,所以我们要用版本管理pyenv来隔离环境. pyenv 根据官方文档的讲解, ...
- 关于Gevent的使用指北
关于Gevent的使用指北 只是看了入门指南,和一个翻译文档.写一下个人读书心得. 其实看完之后,第一个反映就是asyncio这个系统库,感觉gevent现在所做的一些事情是与asyncio很像的,但 ...
- Celery入门指北
Celery入门指北 其实本文就是我看完Celery的官方文档指南的读书笔记.然后由于我的懒,只看完了那些入门指南,原文地址:First Steps with Celery,Next Steps,Us ...
- 后端API入门到放弃指北
后端API入门学习指北 了解一下一下概念. RESTful API标准] 所有的API都遵循[RESTful API标准]. 建议大家都简单了解一下HTTP协议和RESTful API相关资料. 阮一 ...
- 颓废选手在 Ubuntu/Noilinux 下的生存指北
颓废选手在 Ubuntu/Noilinux 下的生存指北 Hint: 这里的 "#" 都是假注释,复制的时候记得删除 一些基本的生存命令 ctrl + alt + t #调出终端 ...
随机推荐
- -bash: bash_profile: command not found问题
这个问题一般就是.bash_profile 文件内容错误,里面内容没加注释之内的,vi .bash_profile打开文件检查一下,然后:wq!保存退出 我的错误就是红圈处没有注释造成的
- Spider--动态网页抓取--审查元素
# 静态网页在浏览器中展示的内容都在HTML的源码中,但主流网页使用 Javascript时,很多内容不出现在HTML的源代码中,我们需要使用动态网页抓取技术. # Ajax: Asynchronou ...
- 聊一聊sockmap 以及ebpf 实例演示
eBPF实质上是一个内核注入技术 用户态可以用C来写运行的代码,再通过一个Clang&LLVM的编译器将C代码编译成BPF目标码: 用户态通过系统调用bpf()将BPF目标码注入到内核当中,并 ...
- 命名管道FIFO及其读写规则
一.匿名管道的一个限制就是只能在具有共同祖先的进程间通信命名管道(FIFO):如果我们想在不相关的进程之间切换数据,可以使用FIFO文件来做这项工作注意:命名管道是一种特殊类型文件.利用命令:$ mk ...
- js,昨天的日期
var mydate = new Date(); var yester = mydate-24*60*60*1000; var yesterday = new Date(); yesterday.se ...
- RSA脚本环境配置-攻防世界-OldDriver
[Crypto] 题目链接 [RSA算法解密] 审题分析 首先拿到一个压缩包,解压得到文件enc.txt. 先不用去管其他,第一眼enc马上联想到 RSA解密.接着往下看 [{"c" ...
- 深度分析:mybatis的底层实现原理,看完你学会了吗?
前言 最近在和粉丝聊天的时候被粉丝问到jdbc和mybatis底层实现这一块的问题,而且还不止一个小伙伴问到,于是我似乎认识到了问题的严重性,我花了两天时间整理了一下自己的认识和网上查阅的资料写了这篇 ...
- Guitar Pro编辑歌词教程
吉他是常见的乐器之一,弹唱亦是音乐爱好者们最常见的表演方式.Guitar Pro(win系统)是吉他爱好者最常用的吉他谱制作软件,大家可以在该软件上创作自己的吉他谱.既然有了谱子,那自然是少不了歌词了 ...
- Java IDEA根据database以及脚本代码自动生成DO,DAO,SqlMapper文件(一)
根据数据库代码自动生成的插件挺多的,这里主要分享两种: 1.根据database以及脚本代码自动生成 2.根据mybatis-generator-core自动生成(下一章节进行分享,包含sqlserv ...
- zabbix的搭建及操作(4)实现邮件,钉钉,微信报警
实现邮件报警 网页版邮箱中开启 POP3/SMTP/IMAP 生成授权码并记录 Server端安装配置邮件服务器 1.Yum安装邮件服务器 yum -y install mailx dos2unix ...