参考链接:

超详细中文完整版-SqlMap用户手册 | 安全盒子

SQLMap命令教程


帮你把题目改了……slqmap是什么工具……?


知乎小白,来写一篇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 的官网,网址是:http://www.sqlmap.org

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

安装完成

(2)kali默认安装sqlmap

3.sqlmap 初步入门

(1)判断是否存在注入

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

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

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

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

查询是否存在注入

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

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

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

显示存在注入

(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

查询资料库

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

(4)获取资料库的表名

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

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

查询表名

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

(5)查询表名的栏位名

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

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

    获取具体的栏位内容

    (6)获取栏位内容

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

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

    获取具体的栏位内容

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

    (7)查询资料库名称

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

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

    列出当前资料库用户

    (9)获取资料库的所有用户

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

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

    列出资料库用户

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

    (10)获取资料库用户的密码

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

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

    查询资料库用户密码

    以上就是 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 查询当前用户是否为管理许可权

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

    查询当前用户是否为资料库管理员账户

    会返回 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,就拿刚刚我用的那个靶场

    执行指定的 sql 语句

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

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

    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"

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


    附上 sqlmap 教程,请趁热食用。

    sqlmap 详细教程


    Sqlmap -hh
    没人吗
    推荐阅读:
    相关文章