sqlmap_SQL

SQLmap

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

  1. 克隆SQLmap的GitHub仓库。
  2. 确保Python环境已安装,因为SQLmap是用Python编写的。

运行SQLmap

SQLmap的基本命令格式如下:

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

示例

  1. 检测注入点
sqlmap -u ""

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

  1. 指定注入点
sqlmap -u "" --data="param1=value1¶m2=value2"

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

  1. 指定数据库类型
sqlmap -u "" --dbms=mysql

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

  1. 提取数据
sqlmap -u "" --dump

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

  1. 执行操作系统命令
sqlmap -u "" --os-shell

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

Tamper脚本

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

sqlmap -u "" --tamper=space2comment

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

进阶用法

sqlmap_数据库_02

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

  1. 自定义注入语法

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

sqlmap_数据库_02

示例场景

假设你已经确定了一个潜在的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"

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

  • 指定其他选项:除了加载Cookie之外,你可能还需要指定其他选项,比如要测试的注入类型、数据库管理系统等。例如:
sqlmap -u "http://example.com/protected_page" --cookie="sessinotallow=abc123" --level=5 --risk=3 --dbms=mysql

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

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

注意事项

  • Cookie的有效性:确保你提供的Cookie值是有效的,并且没有过期。如果Cookie无效或过期,SQLmap可能无法正确地模拟登录状态。
  • 隐私和合规性:在使用SQLmap进行测试时,确保你有权访问和测试目标系统。未经授权的测试可能违反法律和道德规范。
  • 结果分析:测试完成后,仔细分析SQLmap的输出结果,以确定是否存在SQL注如漏动,并采取相应的修复措施。

sqlmap_sql_04

可以利用burp将报文复制下来然后

sqlmap_sql_05

vim一个文件r.txt

sqlmap_sql_06

sqlmap -r r.txt #用sqlmap读取这个文件来审计露懂

sqlmap_SQL_07

发现id位置是有问题的

sqlmap_sql_08

小结

SQLmap是一个功能强大的SQL注如工具,适用于渗投测试和安全审计。它能够自动化地检测和利用SQL注如漏动,提供了丰富的特性和灵活的选项,使得渗投测试人员能够有效地评估和保护Web应用程序的安全性。然而,需要注意的是,SQLmap的使用应仅限于合法授权的渗投测试活动,未经授权的使用可能违反法律。


sqlmap_数据库_09

sqlmap_SQL_10

sqlmap -r r.txt --file-read="/etc/passwd"

这个命令是使用SQLmap工具来尝试从一个存在SQL注如漏动的Web服务器上读取本地文件/etc/passwd。下面是对这个命令的详细解释:

  • -r r.txt:这个参数告诉SQLmap从文件r.txt中读取HTTP请求。这个文件应该包含一个完整的HTTP请求,通常是在进行SQL注如测试之前捕获的。这可以是通过Burp Suite、Wireshark或其他网络嗅探工具捕获的请求。使用这个参数可以让SQLmap知道如何构造请求,包括任何必要的Cookie、POST数据、GET参数等。
  • --file-read="/etc/passwd":这个参数是SQLmap的一个高级功能,它允许你在成功利用SQL注如漏动后,尝试从数据库服务器上读取文件。在这里,"/etc/passwd"是要读取的目标文件的路径。这个文件通常是Unix或类Unix系统上的一个文件,它包含了系统上所有用户账户的基本信息。

整个命令的意图是,一旦SQLmap找到了一个SQL注如点,并且确认了可以利用,它会尝试执行一个操作系统命令,具体来说是读取数据库服务器上的/etc/passwd文件。这通常需要数据库用户具有足够的权限来执行这样的操作。

请注意,执行这样的操作需要非常谨慎,因为它涉及到未经授权的访问和潜在的非法活动。只有在合法授权的渗投测试环境中,才能使用SQLmap进行此类测试。未经授权的尝试读取或修改远程服务器上的文件是违法的,并可能导致严重的法律后果。因此,确保你的行为符合当地法律法规,并且在进行任何形式的渗投测试之前获得适当的授权。

sqlmap_数据库_11

sqlmap_sql_12

sqlmap -r r.txt --os-shell

这个命令是使用SQLmap工具来尝试在一个存在SQL注如漏动的Web服务器上获取一个交互式的操作系统shell。下面是对这个命令的详细解释:

  • -r r.txt:这个参数告诉SQLmap从文件r.txt中读取HTTP请求。这个文件应该包含一个完整的HTTP请求,通常是在进行SQL注如测试之前捕获的。这可以是通过Burp Suite、Wireshark或其他网络嗅探工具捕获的请求。使用这个参数可以让SQLmap知道如何构造请求,包括任何必要的Cookie、POST数据、GET参数等。
  • --os-shell:这个参数是SQLmap的一个高级功能,它允许你在成功利用SQL注如漏动后,尝试获取一个交互式的操作系统shell。这意味着SQLmap会尝试在数据库服务器上执行一系列的操作,最终目的是打开一个可以让你输入命令并接收输出的界面。这个shell可以是基于文本的(如Bash shell)或图形界面的(如Windows的cmd或PowerShell),取决于服务器的操作系统和配置。

整个命令的意图是,一旦SQLmap找到了一个SQL注如点,并且确认了可以利用,它会尝试执行一系列的操作来获取一个操作系统shell。这通常需要数据库用户具有足够的权限来执行这样的操作,包括创建文件、写入内容、执行系统命令等。

密码破接

sqlmap_SQL_13

七成的成功渗投测试都是跟密码爆坡和弱口令相关的

kali存放字典的位置,rockyou.txt.gz

sqlmap_sql_14