sqlmap

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
Web应用防火墙 3.0,每月20元额度 3个月
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: sqlmap

image.png

SQLmap

SQLmap可以在大多数Linux发行版上运行,也可以在Windows上运行。安装步骤通常包括:

克隆SQLmap的GitHub仓库。

确保Python环境已安装,因为SQLmap是用Python编写的。

运行SQLmap

SQLmap的基本命令格式如下:

sqlmap [options]


[options]:指定SQLmap的选项,如目标URL、注入类型、数据库类型等。

示例

检测注入点:

sqlmap -u ""


这将检测给定URL是否存在SQL注如漏动。

指定注入点:

sqlmap -u "" --data="param1=value1¶m2=value2"


这将针对POST请求中的特定数据进行SQL注如检测。

指定数据库类型:

sqlmap -u "" --dbms=mysql


这将指定后端数据库为MySQL。

提取数据:

sqlmap -u "" --dump


这将尝试从数据库中提取数据。

执行操作系统命令:

sqlmap -u "" --os-shell

这将尝试在数据库服务器上获取一个交互式的shell。

Tamper脚本

SQLmap支持Tamper脚本,这些脚本可以修改注入数据,以绕过WAF或其他安全措施。例如:

sqlmap -u "" --tamper=space2comment


这将使用space2commentTamper脚本来替换空格字符,以绕过基于空格的过滤。

进阶用法

image.png

SQLmap的高级用法涉及一些更复杂和特定的功能,这些功能可以帮助渗投测试人员更深入地挖掘和利用SQL注如漏动。以下是一些高级用法的例子:

自定义注入语法

SQLmap允许用户自定义注入语法,这在处理一些非标准的数据库或特殊注入场景时非常有用。通过--custom-inject参数,用户可以定义自己的注入语法。

sqlmap -u "http://example.com" --custom-inject='payload'

2. 多线程扫描

在处理大型网站或多个注入点时,使用多线程可以显著提高扫描效率。通过--threads参数,用户可以指定并发线程的数量。

sqlmap -u "http://example.com" --threads=5


3. 深度探测模式

深度探测模式(--deep)可以对网站进行全面的SQL注如测试,包括检测隐藏的注入点和执行更详细的测试。

sqlmap -u "http://example.com" --deep

4. 代理设置

在需要通过代理服务器进行测试时,SQLmap支持设置HTTP代理。

sqlmap -u "http://example.com" --proxy="http://127.0.0.1:8080"

5. 避免WAF检测

有些网站可能会使用Web应用防火墙(WAF)来阻止SQL注如公鸡。SQLmap提供了一些选项来避免WAF的检测,比如使用--randomize参数随机化注入语法,或者使用--tamper参数配合不同的Tamper脚本。

sqlmap -u "http://example.com" --randomize=space,comment  
sqlmap -u "http://example.com" --tamper=space2comment,randomcase


6. 执行自定义SQL语句

通过--sql-query参数,用户可以执行自定义的SQL语句,这在需要执行特定查询时非常有用。

sqlmap -u "http://example.com" --sql-query="SELECT * FROM users WHERE id=1"


7. 提取数据库结构

SQLmap可以提取数据库的完整结构,包括表、列和索引信息。使用--dbs参数可以列出所有数据库,--tables参数可以列出指定数据库的所有表,--columns参数可以列出指定表的所有列。

sqlmap -u "http://example.com" --dbs  
sqlmap -u "http://example.com" --tables -D database_name  
sqlmap -u "http://example.com" --columns -T table_name -D database_name

8.自动破接密码哈希

如果数据库中存储了密码哈希,SQLmap可以通过字典公鸡自动破接这些哈希。使用--hashes参数指定哈希字段,--wordlist参数指定字典文件。

sqlmap -u "http://example.com" --hashes="password_hash" --wordlist="/path/to/wordlist.txt"

9. 跨站脚本(XSS)检测

SQLmap还支持检测跨站脚本(XSS)漏动。使用--xss参数可以启用XSS检测。

sqlmap -u "http://example.com" --xss


10. 与其他工具集成

SQLmap可以与其他渗投测试工具集成,比如Burp Suite、Metasploit等。通过--burp参数可以启用与Burp Suite的集成。

sqlmap -u "http://example.com" --burp


11.cookie

image.png

示例场景

假设你已经确定了一个潜在的SQL注如点,但是该页面需要通过Cookie进行身份验证。你需要将Cookie信息传递给SQLmap,以便它可以模拟登录状态并执行注入测试。

示例步骤

获取Cookie值:首先,你需要从浏览器或使用其他工具(如curl、Postman等)获取到所需的Cookie值。例如,你可能得到了一个名为sessionid的Cookie值,其值为abc123。

使用SQLmap加载Cookie:接下来,你可以使用SQLmap的--cookie参数来指定这个Cookie值。以下是一个基本的命令示例:

sqlmap -u "http://example.com/protected_page" --cookie="sessinotallow=abc123"

1.

这个命令告诉SQLmap在发送HTTP请求时包含指定的Cookie值。

指定其他选项:除了加载Cookie之外,你可能还需要指定其他选项,比如要测试的注入类型、数据库管理系统等。例如:

sqlmap -u "http://example.com/protected_page" --cookie="sessinotallow=abc123" --level=5 --risk=3 --dbms=mysql

1.

在这个命令中,--level=5表示使用最高级别的测试,--risk=3表示使用最高风险级别的测试,--dbms=mysql指定了后端数据库为MySQL。

执行测试:运行上述命令后,SQLmap将开始执行SQL注如测试,同时保持会话的登录状态,因为它包含了正确的Cookie值。

注意事项

Cookie的有效性:确保你提供的Cookie值是有效的,并且没有过期。如果Cookie无效或过期,SQLmap可能无法正确地模拟登录状态。

隐私和合规性:在使用SQLmap进行测试时,确保你有权访问和测试目标系统。未经授权的测试可能违反法律和道德规范。

结果分析:测试完成后,仔细分析SQLmap的输出结果,以确定是否存在SQL注如漏动,并采取相应的修复措施。

image.png

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
SQL 安全 关系型数据库
Sqlmap2021 -- Referer注入
Sqlmap2021 -- Referer注入
151 1
|
SQL 测试技术 网络安全
[ 渗透工具篇 ] sqlmap 详解(一) sqlmap 安装详解
[ 渗透工具篇 ] sqlmap 详解(一) sqlmap 安装详解
1562 0
[ 渗透工具篇 ] sqlmap 详解(一) sqlmap 安装详解
|
2月前
|
SQL 关系型数据库 MySQL
sqlmap进阶使用
sqlmap进阶使用
|
5月前
|
SQL 安全 关系型数据库
使用SQLMap进行SQL注入测试
使用SQLMap进行SQL注入测试
|
7月前
|
SQL Shell 数据库
21、sqlmap参数详解
21、sqlmap参数详解
76 0
|
7月前
|
数据库
Sqlmap是如何GET注入的
Sqlmap是如何GET注入的
58 0
|
SQL 安全 数据库
|
SQL 安全 数据库
sqlmap的基本使用方法
sqlmap的基本使用方法
381 0
|
SQL Oracle 关系型数据库
sqlmap的使用
sqlmap的使用
164 0
|
SQL Shell 数据库