文章目录

  • 前言:
  • 一、SQLMap介绍
    • 1、Sqlmap简介:
    • 2、Sqlmap支持的注入方式:
    • 3、Sqlmap输出级别:
  • 二、SQLMap安装
  • 三、SQLMap使用:
    • 1、判断是否存在注入:
    • 2、判断文本中的请求是否存在注入:
    • 3、查询当前用户下的所有数据库:
    • 4、获取数据库中的表名:
    • 5、获取表中的字段名:
    • 6、获取字段内容:
    • 7、获取数据库的所有用户:
    • 8、获取数据库用户的密码:
    • 9、获取当前网站数据库的名称:
    • 10、获取当前网站数据库的用户名称:
  • 四、SQLMap进阶:参数讲解
    • 1、`--level 5`:探测等级
    • 2、`--is-dba`:当前用户是否为管理权限
    • 3、`--roles`:列出数据库管理员角色
    • 4、`--referer`:HTTP referer头
    • 5、`--sql-shell`:运行自定义SQL语句
    • 6、`--os-cmd`,`--os-shell`:运行任意操作系统命令
    • 7、`--file-read`:从数据库服务器中读取文件
    • 8、`--file-write --file-dest`:上传文件到数据库服务器中

前言:

今天来总结一下sqlmap注入神器的详细使用方法。

一、SQLMap介绍

1、Sqlmap简介:

Sqlmap是一个开源的渗透测试工具,可以用来自动化的检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。

目前支持的数据库有MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access等大多数据库。

2、Sqlmap支持的注入方式:

Sqlmap全面支持六种SQL注入技术:

  • 基于布尔类型的盲注:即可以根据返回页面判断条件真假的注入。

  • 基于时间的盲注:即不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已执行(即页面返回时间是否增加)来判断。

  • 基于报错注入:即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中。

  • 联合查询注入:在可以使用Union的情况下的注入。

  • 堆查询注入:可以同时执行多条语句时的注入。

  • 带外注入:构造SQL语句,这些语句在呈现给数据库时会触发数据库系统创建与攻击者控制的外部服务器的连接。以这种方式,攻击者可以收集数据或可能控制数据库的行为。

3、Sqlmap输出级别:

使用 Sqlmap 对一个注入点进行测试时,可以使用 -v x 参数指定回显信息的复杂度,x范围为[0~6],共有 7 个等级,默认为 1。

  • 0:只显示python错误以及严重的信息。
  • 1:同时显示基本信息和警告信息。(默认)
  • 2:同时显示debug信息。
  • 3:同时显示注入的payload。
  • 4:同时显示HTTP请求。
  • 5:同时显示HTTP响应头。
  • 6:同时显示HTTP响应页面。

如果想看到 Sqlmap 发送的测试 payload 最好的等级就是3,例:

sqlmap.py -v 3 -u "http://www.xxx.com/a.php?id=x"

二、SQLMap安装

Sqlmap官网:http://sqlmap.org/,Sqlmap的安装需要Python环境,最新版可以运行在 Python 2.6, 2.7 和 3.x 版本的任何平台上。

下载完成后可以添加进环境变量,方便使用(不添加也可以用)

当出现这个画面时工具即可正常运行了。

三、SQLMap使用:

1、判断是否存在注入:

假设目标注入点是 http://127.0.0.1/sqli-labs/Less-1/?id=1,判断其是否存在注入的命令如下:

sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1

结果显示存在注入:
当注入点后面的参数大于等于两个时,需要加双引号,如下所示。

sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-1/?id=1&uid=2"

运行完判断是否存在注入的语句后,爆出一大段代码,这里有三处需要选择的地方:
第一处的意思为检测到数据库可能是MySQL,是否需要跳过检测其他数据库;
第二处的意思是在“level1、risk1”的情况下,是否使用MySQL对应的所有Payload进行检测;
第三处的意思是参数id存在漏洞,是否要继续检测其他参数,一般默认按回车键即可。

可以在语句后面加参数:--beach 会选定默认的选项执行(如上)。

2、判断文本中的请求是否存在注入:

从txt文件中加载HTTP请求,Sqlmap可以从一个文本文件中获取HTTP请求,这样就可以不设置其他参数(如cookie、POST数据等),txt文件中的内容为Web数据包,如下:
判断是否存在注入的命令如下,运行后的结果如图所示,-r一般在存在cookie注入时使用。

sqlmap.py -r 1.txt

3、查询当前用户下的所有数据库:

该命令是确定网站存在注入后,用于查询当前用户下的所有数据库,如下所示。如果当前用户有权限读取包含所有数据库列表信息的表,使用该命令就可以列出所有数据库,如图所示:

sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --dbs


从图中可以看到,查询出了10个数据库及所有数据库的库名。当继续注入时,--dbs缩写成-D xxx,其意思是在xxx数据库中继续查询其他数据。

4、获取数据库中的表名:

该命令的作用是查询完数据库后,查询指定数据库中所有的表名,如下所示。如果在该命令中不加入 -D参数来指定某一个具体的数据库,那么Sqlmap会列出数据库中所有库的表。

sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 -D security --tables


从图中可以看到 security 数据库中拥有的4个数据表。当继续注入时,--tables缩写成-T,意思是在某表中继续查询。

5、获取表中的字段名:

该命令的作用是查询完表名后,查询该表中所有的字段名,如下所示。运行该命令的结果如图所示。

sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 -D security -T users --columns


从图中可以看到在 security 数据库中的users表中一共有3个字段。在后续的注入中,--columns缩写成-C

6、获取字段内容:

该命令是查询完字段名之后,获取该字段中具体的数据信息,如下所示。

sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 -D security -T users -C username,password --dump

这里需要下载的数据是 security 数据库里 users 表中 username和password 的值,如图所示:

7、获取数据库的所有用户:

该命令的作用是列出数据库的所有用户,如下所示。在当前用户有权限读取包含所有用户的表的权限时,使用该命令就可以列出所有管理用户。

sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --users

可以看到,当前用户的账号是root,如图所示:

8、获取数据库用户的密码:

该命令的作用是列出数据库用户的密码,如下所示。如果当前用户有读取包含用户密码的权限,sqlmap会先列举出用户,然后列出Hash,并尝试破解。

sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --passwords


从图中可以看到,密码使用MySQL5加密,可在网站中自行解密(自带的解密很慢)。

9、获取当前网站数据库的名称:

使用该命令可以列出当前网站使用的数据库,如下所示。

sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --current-db


从图中可以看到数据库是security。

10、获取当前网站数据库的用户名称:

使用该命令可以列出当前网站使用的数据库用户,如下所示。

sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --current-user


从图中可以看到,用户是root。

四、SQLMap进阶:参数讲解

1、--level 5:探测等级

参数--level 5指需要执行的测试等级,一共有5个等级(1~5),不加 level 默认是1。5级包含的 Payload 最多,会自动破解出 cookie、XFF等头部注入。当然,level 5的运行速度也比较慢。

这个参数会影响测试的注入点,GET和POST的数据都会进行测试,HTTP cookie 在 level 为2时就会测试,HTTP User-Agent/Referer 头在 level 为3时就会测试。总之,在不确定哪个 payload 或参数为注入点时,为了保证全面性,建议使用高的 level 值。

2、--is-dba:当前用户是否为管理权限

该命令用于查看当前账户是否为数据库管理员账户,如下所示:

sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --is-dba

3、--roles:列出数据库管理员角色

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

4、--referer:HTTP referer头

Sqlmap 可以在请求中伪造 HTTP 中的 referer,当--level参数设定为3或3以上时,会尝试对referer注入。可以使用referer命令来欺骗,例:

sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --referer http://www.baidu.com
5、--sql-shell:运行自定义SQL语句

该命令用于执行指定的SQL语句,如下所示,假设执行select * from users limit 0,1语句,如下所示:

sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --sql-shell

6、--os-cmd--os-shell:运行任意操作系统命令

在当前用户有权限使用特定的函数的前提下,如果数据库为MySQL、PostgreSQL,Sqlmap会上传一个二进制库,包含用户自定义的函数sys_exec ()sys_eval (),那么创建的这两个函数就可以执行系统命令。

如果数据库是微软 SQL Server时,Sqlmap通过存储过程 xp_cmdshell 来执行任意命令,如果 xp_cmdshell 被禁用(SQL Server 2005及以上版本默认被禁用),则Sqlmap会重新启用它;如果不存在,会自动创建。

--os-shell参数可以模拟一个真实的Shell,输入想执行的命令。当不能执行多语句时(如PHP或ASP+Mysql),仍然可以使用 INTO OUTFILE写进可写目录,创建一个Web后门。

Sqlmap支持ASP、ASP.NET、JSP和PHP四种语言(要想执行该参数,需要有数据库管理员权限,也就是--is-dba的值要为True)。

1.执行系统命令:

sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --os-cmd=ipconfig

执行后根据提示选择网站语言,然后回车,指定目标站点根目录,然后继续回车即可完整执行命令。

2.执行shell:

sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --os-shell

执行后根据提示选择网站语言,然后回车,指定目标站点根目录后回车,输入命令即可执行。

执行命令后会在网站根目录上传两个文件:tmpbxbxz.php、tmpuoiuz.php(此文件为上传页面)

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

该命令用于读取执行文件,当数据库为MySQL、PostgreSQL或MicrosoftSQL Server,并且当前用户有权限使用特定的函数时,读取的文件可以是文本,也可以是二进制文件。

sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --file-read "C:/11.txt"


执行完会把文件保存到本地目录下

8、--file-write --file-dest:上传文件到数据库服务器中

该命令用于写入本地文件到服务器中,当数据库为MySQL、PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数时,上传的文件可以是文本,也可以是二进制文件。

sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --file-write "C:/1.txt" --file-dest "C:/windows/Temp/1.php"

执行结束即可把本地的1.txt 文件上传到目标服务器下

SQLMap使用详解相关推荐

  1. Sqlmap参数详解

    SQLMAP参数详解 option 选项 1:h 列出基础帮助信息并退出 2:-hh 列出标准帮助信息并退出 3:–version 列出应用版本号并退出 (-h-hh用于查询基本帮助信息和全量帮助信息 ...

  2. sqlmap用户手册详解【实用版】

    另一篇教程推荐:Sqlmap使用教程[个人笔记精华整理] 当给sqlmap这么一个url (http://www.target.com/sqlmap/mysql/get_int.php?id=1) 的 ...

  3. SQLMAP工具详解

    sqlmap 支持的注入模式: ​ 基于布尔的盲注:根据返回的页面内容为条件判断真假的注入: ​ 基于时间的盲注:不能根据页面返回内容判断任何信息.用条件语句加入延时函数,通过页面的返回时间来判断: ...

  4. SQLMap 使用详解

    sqlmap是一个常用的自动化SQL注入工具,其主要功能是扫描.发现并利用给定URL的SQL注入漏洞,并且内置了很多绕过插件,支持很多种数据库. 这里使用sqli-lab做实验. 1.sqlmap入门 ...

  5. 详解强大的SQL注入工具——SQLMAP

    本文转自:详解强大的SQL注入工具--SQLMAP 前言 Windows下的注入工具好的又贵,免费的啊D.明小子等又不好用,我们根本没必要花 时间去找什么破解的havij.pangolin什么的,特别 ...

  6. sqlmap工具使用用法详解

    2019独角兽企业重金招聘Python工程师标准>>> sqlmap工具使用用法详解 QLmap是一款用来检测与利用SQL注入漏洞的免费开源工具,有一个非常棒的特性,即对检测与利用的 ...

  7. [系统安全] 四十四.APT系列(9)Metasploit技术之基础用法万字详解及防御机理

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  8. web目录字典_Metasploit -- 目录详解及常用命令

    暗恋这件事,就好像下了一场暴雨,我故意站在门外,几度想要敲你的门,问你是否可以暂时借避,可是又不敢,只好一直站在雨里... ---- 网易云热评 鸣谢:山丘安全攻防实验室 ---- 陈殷 一.Meta ...

  9. mysql sleep详解_sql注入详解(二)

    sql注入详解 4.检测方法 首先是判断能不能进行sql注入 是哪种sql注入 (1)数字型 ?id=1 and 1=1 返回成功?id=1 and 1=2 返回失败 这说明是数字型注入,或者叫整型注 ...

最新文章

  1. 第十一周总结CoreIDRAW
  2. 顶会快讯|5篇AAAI2020相关论文抢先看(附GitHub代码地址)
  3. Android Activity的生命周期、意图(Intent)
  4. 一种验证Linux kernel是否可用的Sanity Check方法
  5. swing获取文本框内容_营销管理培训课件,大客服销售策略和技巧,全内容PPT拿来就用...
  6. 当前版本与卡刷包android_小米5s卡刷包android版本不一致怎么解决
  7. 【贵州大学计算机考研1】三本学生考研上岸贵州大学软件工程专硕(附带真题与答案)
  8. vsphere 6.5 HA 提示:此主机当前没有管理网络冗余,该主机的vSphere HA检测信号数据存储数目为0 告警消除
  9. 光源与打光该如何选择,如何获得一副好图像,机器视觉第二步,选择光源和如何打光
  10. Build Metal-based Core Image kernels with Xcode
  11. 重生之我是赏金猎人-SRC漏洞挖掘(十三)-攻防对抗/梦中绝杀X脖代理商
  12. 显示农历天气时钟小部件下载_文字云时钟安卓版下载|文字云时钟app下载_v1.0
  13. 自己动手制作Windows RE(Windows恢复环境)的启动U盘
  14. cocos2d-2.1rc0-x-2.1.3运行libcurl返回CURLE_COULDNT_CONNECT(7)
  15. 计算机网络安全的一些概念以及知识点
  16. Windows 底下安装 git Server: Bonobo Git Server
  17. 参数化,断言,参数化时为什么做断言,怎么做断言,如何确保断言的正确
  18. UVALive 5864 - Register Allocation
  19. 关于错误:[Error] expected primary-expression before ‘int‘
  20. InfoPath学习

热门文章

  1. 帝国CMS仿新版知更鸟自适应源码支持黑夜模式
  2. 我与‘or’、‘|’和‘||’不得不说的故事
  3. 什么时候需要分表分库?
  4. 拾荒“共享残骸”的致富之路
  5. oracle没有create or replace table
  6. 使用JSONObject解析
  7. Linux vi/vim 下字符串搜索
  8. 【SemiDrive源码分析】【X9芯片启动流程】27 - AP1 Android Preloader启动流程分析(加载atf、tos、bootloader镜像后进入BL31环境)
  9. 线性回归 - 宝可梦案例
  10. Camera | 1.Camera基础知识