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 #调出终端 ...
随机推荐
- C++ 数据结构 3:树和二叉树
1 树 1.1 定义 由一个或多个(n ≥ 0)结点组成的有限集合 T,有且仅有一个结点称为根(root),当 n > 1 时,其余的结点分为 m (m ≥ 0)个互不相交的有限集合T1,T2, ...
- ngx ------ngx_cache_manager_process_cycle
static void ngx_cache_manager_process_cycle(ngx_cycle_t *cycle, void *data) {----------------------- ...
- SpringBoot微服务框架
springboot 是什么? 配置如何编写 yaml 自动装配原理 集成Web开发 集成数据库Druid 分布式开发:Dubbo(RPC)+zookeeper swagger:接口文档 任务调度 S ...
- The Dos and Don'ts for Ceph for OpenStack
Ceph和OpenStack是一个非常有用和非常受欢迎的组合. 不过,部署Ceph / OpenStack经常会有一些容易避免的缺点 - 我们将帮助你解决它们 使用 show_image_direct ...
- CPU相关的学习
我理解的CPU 目前对cpu的了解停留在这个水平 查看CPU型号: cat /proc/cpuinfo |grep model |tail -n 1 model name : Intel(R) Xeo ...
- C++运行时类型判断dynamic_cast和typeid
dynamic_cast dynamic_cast < Type-id > ( expression ) dynamic_cast<类型>(变量) 在运行期间检测类型转换是否安 ...
- 两种不同的扩展Scrum的方式
两种不同的扩展Scrum的方式 1.LeSS和LeSS Huge –大型Scrum LeSS(和LeSS Huge –真正的大型程序)的合著者Craig Larman首先批评了管理,开发人员和客户传统 ...
- 如何将多个网页合并成一个PDF文件
pdfFactory是一款PDF虚拟打印软件,但与其他虚拟打印机软件不同的是,它使用起来更加简单高效.由于无需Acrobat就能生成Adobe PDF文件,它可以帮助用户在系统没有连接打印机的情况下, ...
- Camtasia快捷键大全
Camtasia是一款专业屏幕录制软件,它能在任何颜色模式下轻松地记录屏幕动作,另外它还具有即时播放和编辑压缩的功能.在生活上应用范围相当的广泛.在实际运用中如果能了解到相关的快捷键知识,相信是一定程 ...
- 怎么在word里编辑插入数学公式?
大学时代我们都有一个共同的噩梦--高数.每次上完高数课都有一些数学公式.可是我们最难的就是想用电脑在word中做笔记的时候该怎样用word插入公式.Word中自有的公式太少,新公式又太难输入.这也是一 ...