sqlmap布尔盲注怎么_sqlmap工具使用详解

大家好,我是 Taicker,鄙人有幸被 38.5 挑衅了,这其中发生了什么感人至深的故事,我就不说了。先来讲sqlmap工具

1.sqlmap是什么

sqlmap是一款自动化的 sql 注入工具,闻名程度匹敌几年前的啊 D,他的功能很多,比如判断是否可以注入,发现,然后利用漏洞,里面也包含了许多绕 waf 的脚本,不过近两年都绕不了了,在 18 年的时候还勉强可以绕过。他支持许多数据库:MySQL,Microsoft sql server,access,sqllite,Oracle,postgreSQL,IBM DB2,sybase,SAP maxdb。当然我都是百度的这些。

sqlmap也是是一款用来检测与利用SQL注入漏洞的免费开源工具,有一个非常棒的特性,即对检测与利用的自动化处理(数据库指纹、访问底层文件系统、执行命令),它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令SQLmap命令选项被归类为目标(Target)选项、请求(Request)选项、优化、注入、检测、技巧(Techniques)、指纹、枚举等。

sqlmap 有几种sql注入方式:布尔盲注,时间盲注,联合查询注入,报错注入,堆查询注入。

sqlmap支持五种不同的注入模式:

基于布尔的盲注,即可以根据返回页面判断条件真假的注入;基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断;基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中;联合查询注入,可以使用union的情况下的注入;堆查询注入,可以同时执行多条语句的执行时的注入。

2.安装 sqlmap

(1)windows下安装

sqlmap 的安装需要 Python 环境,不支持 Python3,可能需要一些组件包的支持,需要有python2.7.x或者2.6.x环境支持。可以去官网直接下载 Python,然后我们去 sqlmap 的官网,网址是:www.sqlmap.org

54f5c9135887aa454e84c5f0217a8261.png

下载最新的 sqlmap,然后下载后,将压缩包复制到上 Python27 目录下,然后解压下来,然后我们打开 sqlmap,当然是必须在根目录下的,可不要直接在 cmd 打 sqlmap.py

80bc2721ed1e8a415e0c9e0e6bf67f02.png

安装完成

(2)kali默认安装sqlmap

3.sqlmap 初步入门

(1)判断是否存在注入

一个网站是否有注入点,我个人认为要依照三个点:1.是否有可控参数,就是 id=1,这个 1 就是参数2.是否可以在数据库执行3.是否可以返回数据

如果有了这三条要点就可以了

我们假如拿到一个站,首先要看他的网页,先不提伪静态的站。假如注入点是 xxx.com/xxx?id=1假如注入点是这个,我们就拿 sqlmap 判断是否存在注入

sqlmap.py -u xxx.com/xxx?id=1

07493da244f6a6075e84c0583ae77b07.png

                                                             查询是否存在注入

然后我们如果遇到注入点的参数不为 1 的情况时,就是大于 1 时,需要加双引号

sqlmap.py -u  “xxx.com/xxx?id=1”

然后我们可以看到,在第一行显示数据库可能是 MySQL,然后我这个出的信息太少,因为以前日过·······大家在找注入点时,检测的过程中会询问你什么问题,你就回车就可以了。

451faf4c9d40ed1aef77146246296c44.png

                                                          显示存在注入

(2)判断请求数据包中是否存在注入

sqlmap 有个功能,就是可以从 txt 中获取 http 请求,这样就可以不设置一些参数,比如 cookie,我们怎么弄到请求的数据包呢,就拿 burp 抓包,至于怎么抓包我会在下面提到的,然后我们用下面这条指令

sqlmap.py -r desktop/38.5wocnm.txt这条指令我也不怎么经常用,他是存在 cookie 注入才使用的。

(3)查询所有数据库

当 sqlmap 确认可以注入时,我们就可以查询所有数据库了,前提是你的用户有权限读取所有数据库列表时,才可以列出是数据库,命令如下

sqlmap.py -u  xxx.com/xxx?id=1 --dbs

0cd92ac30928c0d88f3560779c8a8237.png

                                                            查询数据库

我们可以看到,查询了 5 个数据库以及列出了库名,我们在继续注入时,要将--dbs 改为-D xxx,记住要是大写,意思是在 xxx 数据库查询

(4)获取数据库的表名

这个命令是我们前提下已经查询量数据库后,然后我们在查询数据库内的表名,命令如下

sqlmap.py -u xxx.com/xxx?id=1 -D stormgroup --tables

57eb9dc8523b0d75e33736e86a97b537.png

                                                                 查询表名

可以看到我们查询出了两个表名

(5)查询表名的字段名

前提还是在我们获取了表名时,查询表内的字段名,当然我们还是跟上面的一样,将 tables 改为大写 T,命令如下:

sqlmap.py -u xxx.com/xxx?id=1 -D stormgroup -T member --columns

179677e634afa1c14615e06bd43ca893.png

                                                         获取具体的字段内容

(6)获取字段内容

我们查询完字段内容,下一步就是获取字段内容了,我们就看 member 表中的 name 和 password 的值,命令如下:

sqlmap.py -u xxx.com/xxx?id=1 -D stormgroup -T member -C name,password --dump

13fd359c66fca7e46bdce202b708fa90.png

                                                         获取具体的字段内容

可以看到列出了账号密码,并且密码是用 md5 加密的

(7)查询数据库名称

用下面这条指令查询当前网站使用的数据库

sqlmap.py -u xxx.com/xxx?id=1 --current-db

8534c521fd2086481c086d540096f40c.png

                                                           列出当前数据库用户

(9)获取数据库的所有用户

这个命令前提是当前用户有权限读取所有用户的表的权限,命令如下:

sqlmap.py -u xxx.com/xxx?id=1 --users

39232d1b554807ea8b931c0e9a01613c.png

                                                       列出数据库用户

可以看到我们的用户账号是 root,root 是最高权限

(10)获取数据库用户的密码

这个指令是列出数据库用户的密码,命令如下:

sqlmap.py -u xxx.com/xxx?id=1 --password

84164912a3e5d71ebfb167b06696f2fd.png

                                                     查询数据库用户密码

以上就是 sqlmap 入门了,接下来我们讲一下更高层面

(1)--level 5 探测等级

sqlmap 他有 5 个等级,你可以理解为游戏一样,有 5 个等级,最低等级打的怪越垃圾,最高等级可以打 boss。在用此命令时,可以不加 level,默认 1。在我们不用此命令时,我们默认的就是 level 1。sqlmap 使用的 payload 在 xml/payloads.xml 中可以看到,也可以根据对应的格式添加自己的 payload,5 级包含的 payload 最多。不过 level 5 的执行速度会很慢很慢的。不过我还是建议使用高的 level 值,因为他出的东西是很全的

(2)--is-dba 查询当前用户是否为管理权限

该命令用于查看当前用户是否为数据库管理员账户

8cee40b18d73975c52ce017e5175719d.png

                                 查询当前用户是否为数据库管理员账户

会返回 true

(3)--roles 列出数据库管理员角色

用于查看数据库用户的角色,如果当前用户有权限读取包含所有用户的表,该命令会列举出每个用户的角色,也可以使用-U 参数指定想看哪个用户的角色。该命令仅适用于当前数据库是 Oracle 时。

(4)--referer http refer 头

sqlmap 可以在请求中伪造 http 中的 Referer,当探测等级--level 参数设定为 3 或 3 以上时,会尝试 Referer 注入。如--referer http://www.baidu.com

(5)--sql-shell 运行自定义 SQL 语句

这个命令用于执行指定的 SQL 语句,我们假设执行 select name from stormgroup.member limit 0,1,就拿刚刚我用的那个靶场

b1dcc49ae79fddacc45a80d2517ecef3.png

执行指定的 sql 语句

(6)--os-cmd,--os-shell 执行任意操作系统命令

当数据库为 MySQL、PostgreSQL 或 SQLserver 且当前用户具有权限使用特定函数时该指令生效,但实现的原理有所不同。我本人其实很少用这个指令的,不过我知道他执行--os-shell的必须条件有两点,如果有补充的欢迎私信我QQ

1.网站必须是root权限2.攻击者需要知道网站的绝对路径--os-shell支持asp,asp.net,jsp和php四种语言

(7)--file-read 从数据库服务器中读取文件

这个命令用于读取执行文件,数据库为MySQL,postgresql或Microsoft sql server,并且当前用户有权限使用特定的函数时,读取的文件可以是文本,也可以是二进制文件。

(8)--file-write --file-dest 上传文件到数据库服务器

权限必须是dba权限,file-write 从本地写入,file-dest 写入目标路径数据库为MySQL,postgresql或Microsoft sql server,并且当前用户有权限使用特定的函数时,上传的文件可以是文本,也可以是二进制文件。

(9)sqlmap绕过waf脚本tamper

sqlmap有自带的绕waf的脚本,简单的示范下

sqlmap.py -u xxx.com/xxx?id=1 -v 3 --dbs --batch --tamper "space2morehash.py"

4fc46f08144dcabc21baafc8a501e98e.png

目前sqlmap提供了57个绕过脚本

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值