当前位置:网站首页 > 技术博客 > 正文

sqlmap详细教程



当给sqlmap一个URL,它会干些什么?

1)判断可注入的参数

2)判断可以用那种SQL注入技术来注入

3)识别出哪种数据库

4)根据用户选择,读取哪些数据

输出信息的详细程度

  • 0:只输出 Python 出错回溯信息,错误和关键信息
  • 1:增加输出普通信息和警告信息
  • 2:增加输出调试信息
  • 3:增加输出已注入的 payloads
  • 4:增加输出 HTTP 请求
  • 5:增加输出 HTTP 响应头
  • 6:增加输出 HTTP 响应内容

目标

请求

指定连接目标地址的方式

注入

以下选项用于指定要测试的参数

提供自定义注入 payloads 和篡改参数的脚本

检测

sqlmap 使用的 payloads 直接从文本文件 中载入。

根据该文件顶部的相关指导说明进行设置,如果 sqlmap 漏过了特定的注入,

你可以选择自己修改指定的 payload 用于检测。

level有5级,越高检测越全,默认为 1

--level 1 检测Get和Post

--level 2 检测HTTP Cookie

--level 3 检测User-Agent和Referer

--level 4 检测

--level 5 检测 HOST 头

risk有3级,级别越高风险越大,默认为1

--risk 2 会在默认的检测上添加大量时间型盲注语句测试

--risk 3 会在原基础上添加 类型的布尔型盲注 ,可能会update导致修改数据库

技术

以下选项用于调整特定 SQL 注入技术的测试方法

枚举

以下选项用于获取数据库的信息,结构和数据表中的数据。

从文件读取HTTP请求,GET和POST都可以

Cookie注入

当防火墙,对请求速度做了限制

仅对MySQL、MSSQL、PosgreSQL有效

数据库用户有读写权限,有目录读写文件权限

仅对MySQL、MSSQL、PosgreSQL有效

数据库用户有读写权限,有目录读写文件权限

sqlmap 能够在数据库所在服务器的操作系统上运行任意的命令

原理 就是上传一个upload木马后,再上传一个cmd shell;

当 --os-shell 退出后, 会调用后门脚本删除上传文件后,进行自删除。

在 MySQL 和 PostgreSQL 中,sqlmap 可以上传一个包含两个用户自定义函数

分别为 和 的共享库(二进制文件)

然后在数据库中创建出两个对应函数,并调用对应函数执行特定的命令,并允许用户选择是否打印出相关命令执行的结果。

在 Microsoft SQL Server 中,sqlmap 会利用 存储过程:

如果该存储过程被关闭了(Microsoft SQL Server 的 2005 及以上版本默认关闭),sqlmap 则会将其重新打开;

如果该存储过程不存在,sqlmap 则会重新创建它。

当用户请求标准输出,sqlmap 将使用任何可用的 SQL 注入技术(盲注、带内注入、报错型注入)去获取对应结果。

相反,如果无需标准输出对应结果,sqlmap 则会使用堆叠查询注入(Stacked queries)技术执行相关的命令。

如果堆叠查询没有被 Web 应用识别出来,并且 DBMS 为 MySQL,

假如后端 DBMS 和 Web 服务器在同一台服务器上,

则仍可以通过利用 语句中的 ,在 根目录可写目录中写shell

使用选项 并按照说明进行操作即可;

如果需要,也可以使用 选项通过命令行指定共享库的本地文件系统路径。

否则 sqlmap 会在运行时向你询问路径。

此功能仅对 MySQL 或 PostgreSQL 有用。

自定义tamper

  • 上一篇: 交叉验证是干嘛的
  • 下一篇: debian iso源
  • 版权声明


    相关文章:

  • 交叉验证是干嘛的2025-05-24 12:01:00
  • 启动项管理软件2025-05-24 12:01:00
  • java匿名内部类详解2025-05-24 12:01:00
  • 图形验证码失效请重新获取2025-05-24 12:01:00
  • xml注释的作用是什么2025-05-24 12:01:00
  • debian iso源2025-05-24 12:01:00
  • mysql函数有哪些2025-05-24 12:01:00
  • vs2019如何发布应用程序2025-05-24 12:01:00
  • java源码是什么意思2025-05-24 12:01:00
  • fastjson poc2025-05-24 12:01:00