Web安全:SqlMap工具
一、简介
sqlmap 是一款开源的渗透测试工具,可以自动化进行SQL注入的检测、利用,并能接管数据库服务器。它具有功能强大的检测引擎,为渗透测试人员提供了许多专业的功能并且可以进行组合,其中包括数据库指纹识别、数据读取和访问底层文件系统,甚至可以通过带外数据连接的方式执行系统命令。
官网下载地址:GitHub - sqlmapproject/sqlmap: Automatic SQL injection and database takeover tool
使用方法:
python sqlmap.py 参数(Windows)
sqlmap 参数(Linux)
sqlmap可以运行在python2.6、2.7和3.x的任何平台上。
官方文档:
Usage · sqlmapproject/sqlmap Wiki (github.com)
二、使用方法
Options模块
1、 -h, --help
显示基础帮助信息。
python sqlmap.py -h
2、 -hh
显示高级帮助信息。
python sqlmap.py -h
3、 --version
显示版本信息。
python sqlmap.py -version
4、 -v VERBOSE
指定的输出信息的内容等级0-6
python sqlmap.py -u "http://ctf/sql_labs/Less-1/?id=1" -v 5
运行结果:
Target模块
1、 -u URL, --url=URL
需要进行注入检测的目标URL。
python sqlmap.py -u "http://ctf/sql_labs/Less-1/?id=1"
2、 -d DIRECT
通过字符串直连数据库。
争对不同的数据库有不同的连接字符串方式。
案例:
python sqlmap.py -d "mysql://root:root@127.0.0.1:3306/testdb"
3、 -l LOGFILE
从Burp或者WebScarab的代理日志中,解析目标。
指定一个Burp或WebScarab的代理日志文件,Sqlmap将从日志文件中解析出可能的攻击目标,并逐个尝试进行注入。个人没尝试过!
4、 -m BULKFILE
扫描文本文件提供的多个目标URL目标。
文本文件中包含多个URL目标,针对多个目标时候使用。
案例:
python sqlmap.py -m url.txt
5、 -r REQUESTFILE
从文件中加载HTTP请求。
将一个HTTP请求保存在文件中,然后使用参数“-r”加载该文件,这样,可以跳过其他一些选项的使用(例如设置Cookie,发布数据等),以该文件中HTTP请求目标为攻击目标进行测试。
案例:
python sqlmap.py -r a.txt
6、 -g GOOGLRFORK :将谷歌查询结果作为目标URL。
将谷歌搜索的前一百条结果,作为检测注入目标(需要科学上网(翻墙))
值:Google hack语句
实例:
sqlmap -g "inurl:\".php?id=1\""
7、 -c CONFIGFILE :从配置conf文件获取注入目标。
打开配置文件模板,填写需要的参数到模板,使用以下代码进行注入。
python sqlmap.py -c a.conf
Request模块
指定http请求的相关参数,感觉可以通过使用-r参数从文件中加载http请求更合适。
Request:These options can be used to specify how to connect to the target URL--method=METHOD Force usage of given HTTP method (e.g. PUT)--data=DATA Data string to be sent through POST (e.g. "id=1")--param-del=PARA.. Character used for splitting parameter values (e.g. &)--cookie=COOKIE HTTP Cookie header value (e.g. "PHPSESSID=a8d127e..")--cookie-del=COO.. Character used for splitting cookie values (e.g. ;)--live-cookies=L.. Live cookies file used for loading up-to-date values--load-cookies=L.. File containing cookies in Netscape/wget format--drop-set-cookie Ignore Set-Cookie header from response-A AGENT, --user.. HTTP User-Agent header value--mobile Imitate smartphone through HTTP User-Agent header--random-agent Use randomly selected HTTP User-Agent header value--host=HOST HTTP Host header value--referer=REFERER HTTP Referer header value--headers=HEADERS Extra headers (e.g. "Accept-Language: fr\nETag: 123")-H HEADER, --hea.. Extra header (e.g. "X-Forwarded-For: 127.0.0.1")--auth-type=AUTH.. HTTP authentication type (Basic, Digest, Bearer, ...)--auth-cred=AUTH.. HTTP authentication credentials (name:password)--auth-file=AUTH.. HTTP authentication PEM cert/private key file--abort-code=ABO.. Abort on (problematic) HTTP error code(s) (e.g. 401)--ignore-code=IG.. Ignore (problematic) HTTP error code(s) (e.g. 401)--ignore-proxy Ignore system default proxy settings--ignore-redirects Ignore redirection attempts--ignore-timeouts Ignore connection timeouts--proxy=PROXY Use a proxy to connect to the target URL--proxy-cred=PRO.. Proxy authentication credentials (name:password)--proxy-file=PRO.. Load proxy list from a file--proxy-freq=PRO.. Requests between change of proxy from a given list--tor Use Tor anonymity network--tor-port=TORPORT Set Tor proxy port other than default--tor-type=TORTYPE Set Tor proxy type (HTTP, SOCKS4 or SOCKS5 (default))--check-tor Check to see if Tor is used properly--delay=DELAY Delay in seconds between each HTTP request--timeout=TIMEOUT Seconds to wait before timeout connection (default 30)--retries=RETRIES Retries when the connection timeouts (default 3)--retry-on=RETRYON Retry request on regexp matching content (e.g. "drop")--randomize=RPARAM Randomly change value for given parameter(s)--safe-url=SAFEURL URL address to visit frequently during testing--safe-post=SAFE.. POST data to send to a safe URL--safe-req=SAFER.. Load safe HTTP request from a file--safe-freq=SAFE.. Regular requests between visits to a safe URL--skip-urlencode Skip URL encoding of payload data--csrf-token=CSR.. Parameter used to hold anti-CSRF token--csrf-url=CSRFURL URL address to visit for extraction of anti-CSRF token--csrf-method=CS.. HTTP method to use during anti-CSRF token page visit--csrf-data=CSRF.. POST data to send during anti-CSRF token page visit--csrf-retries=C.. Retries for anti-CSRF token retrieval (default 0)--force-ssl Force usage of SSL/HTTPS--chunked Use HTTP chunked transfer encoded (POST) requests--hpp Use HTTP parameter pollution method--eval=EVALCODE Evaluate provided Python code before the request (e.g."import hashlib;id2=hashlib.md5(id).hexdigest()")
1、 --method=METHOD
指定请求的方法。
指定HTTP请求的方法。一般情况下,会自动检测请求的方法。在某些特定的情况下需要强制指定方法。
案例:
python sqlmap.py -u “https://www.baidu.com/a.php?id=1” --method=put
2、 --data=DATA
指定POST请求提交的参数
当我们使用data参数,则HTTP会使用post方法将参数当作HTTP data提交,同时也会检测此参数有没有注入漏洞。
案例:
python sqlmap.py -u “https://www.baidu.com/a.php?id=1” --data="id=1"
3、 -param-del=PARAM
指定参数分割符。
一般情况下,网站会用&作为参数的分隔符,这也是SQLMAP默认使用的分隔符,如果有些web application不使用&作为分隔符的话,那么就使用–param-del去告诉sqlmap分隔符是什么。
案例:
python sqlmap.py -u “http://www.xxxxx.com/a.php?id=1;food=2” --param-del=”;”
4、 cookie相关
需要指定Cookie的情况:
1、网站需要Cookie信息
2、检测并利用cookie注入。(当–level设置为2或者更高的时候,sqlmap会检测cookie是否存在注入漏洞。)
参数 | 解释 |
---|---|
--cookie | 指定cookie的内容 |
--cookie-del | 指定cookie的分割符 |
--live-cookies | 从指定的cookie文件中读取当前的cookie信息 |
--load-cookies | 指定以 Netscape/wget 格式存放 cookies 的文件 |
--drop-set-cookie | 忽略 HTTP 响应中的 Set-Cookie 参数 |
5、 user-agent相关
设置用户代理
默认情况下,sqlmap使用的User-Agent是
sqlmap/1.0-dev-xxxxxxx (http://sqlmap.org)
。(当 --level设置为3或者更高时,sqlmap会自动检测user-agent是否存在注入漏洞)
参数 | 解释 |
---|---|
-A AGENT | 自定义User-Agent |
--random-agent | 从sqlmap自带的文本文件中随机选择一个user-agent。这个文件是 ./txt/user-agents.txt |
--mobile | 模拟手机发送请求 |
6、 header相关
参数 | 解释 |
---|---|
--host=HOST | 指定HTTP请求的HOST字段 |
--referer=REFERER | 指定HTTP请求的REFERER字段 |
--headers=HEADERS | 添加额外的HTTP请求字段信息 |
案例:
python sqlmap.py -u “http://www.xxx.com/a.php?id=1” --headers=”X-A : A \nX-B : B”
7、 --auth相关
--auth-type=AUTH.. HTTP authentication type (Basic, Digest, Bearer, ...)
--auth-cred=AUTH.. HTTP authentication credentials (name:password)
--auth-file=AUTH.. HTTP authentication PEM cert/private key file
后端 Web 服务器实现的 HTTP 协议认证时,所有向目标程序发起 HTTP 请求都需要有效凭据来访问。这种情况可以通过使用以下选项来指定有效凭证信息。
参数 | 解释 |
---|---|
--auth-type=AUTH | HTTP请求认证类型(Basic,Digest,Bearer) |
--auth-cred=AUTH | HTTP请求认证证书,格式:name:password |
--auth-file=AUTH | HTTP请求认证文件PEM格式 |
案例:
python sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/basic/get_int.php?id\
=1" --auth-type=Basic --auth-cred="testuser:testpass"
8、 --igore相关
--abort-code=ABO.. Abort on (problematic) HTTP error code(s) (e.g. 401)
--ignore-code=IG.. Ignore (problematic) HTTP error code(s) (e.g. 401)
--ignore-proxy Ignore system default proxy settings
--ignore-redirects Ignore redirection attempts
--ignore-timeouts Ignore connection timeouts
参数 | 解释 |
---|---|
--abort-code=ABO | 遇到指定HTTP错误码中断注入 |
--ignore-code=IG | 忽略指定的HTTP错误码 |
--ignore-proxy | 忽略系统默认代理设置 |
--ignore-redirects | 忽略重定向请求 |
--ignore-timeouts | 忽略连接超时 |
9、 --proxy相关
--proxy=PROXY Use a proxy to connect to the target URL
--proxy-cred=PRO.. Proxy authentication credentials (name:password)
--proxy-file=PRO.. Load proxy list from a file
--proxy-freq=PRO.. Requests between change of proxy from a given list
参数 | 解释 |
---|---|
--proxy=PROXY | 使用代理连接目标URL |
--proxy-cred=PRO | 指定代理认证证书 |
--proxy-file=PRO | 指定一个包含有代理列表的文件,在连接时,会依次使用文件里面的代理 当代理无效时,会自动调到下一个代理 |
--proxy-freq=PRO | 指定请求代理的频率 |
10、 --tor相关
假如因为相关原因需要保持匿名,可以根据 Tor 安装指南配置一个 Tor 客户端和 Privoxy(或类似的)进行代理,而不是使用单个预定义的 HTTP(S) 代理服务器。接着就可以使用开关
--tor
来让 sqlmap 尝试自动设置 Tor 代理连接。如果你想手动设置 Tor 代理的类型和端口,可以使用选项
--tor-type
和--tor-port
(例如:--tor-type=SOCKS5 --tor-port=9050
)。强烈建议偶尔使用
--check-tor
来确保一切设置正确。有些情况下 Tor 包(例如:Vidalia(译者注:Vidalia 是 Tor 的图形界面管理工具,官方已经移除对它的支持))配置错误(或重置了以前的配置)会使你以为已经成功匿名。使用这个开关,sqlmap 将在对任何目标发起请求之前发送一个请求到你正在使用 Tor?这个官方页面检查一切配置是否正常。如果检查失败,sqlmap 将警告你并直接退出。
--tor Use Tor anonymity network
--tor-port=TORPORT Set Tor proxy port other than default
--tor-type=TORTYPE Set Tor proxy type (HTTP, SOCKS4 or SOCKS5 (default))
--check-tor Check to see if Tor is used properly
参数 | 解释 |
---|---|
--tor | 自动设置Tor代理连接 |
--tor-port | 指定端口 |
--tor-type | 指定类型 |
--check-tor | 检查Tor设置是否正确 |
11、 连接时间相关
--delay=DELAY Delay in seconds between each HTTP request
--timeout=TIMEOUT Seconds to wait before timeout connection (default 30)
--retries=RETRIES Retries when the connection timeouts (default 3)
--retry-on=RETRYON Retry request on regexp matching content (e.g. "drop")
参数 | 解释 |
---|---|
--delay=DELAY | 每次HTTP请求间隔多少秒 |
--timeout=TIMEOUT | 指定超时连接的等待时间,默认30s |
--retries=RETRIES | 指定超时连接的重连次数 |
--retry-on=RETRYON | 指定正则匹配的字符串,匹配成功,进行重连 |
案例:
sqlmap -u "http://example.com/vulnerable.php?id=1" --risk=3 --level=5 --retry-on="timeout,error" --threads=5
12、 --randomize=RPARAM
随机更改参数。可以指定请求参数名称,这些参数在请求期间根据原始长度和类型随机更改。这个命令会随机改变
id
参数的值,以便在测试时模拟不同的输入。
案例:
python sqlmap.py -u "http://example.com/vulnerable.php?id=1&name=test" --randomize=id
13、 --safe相关
Sqlmap的盲注测试会产生大量错误请求。为了避免被限制,我们可以每隔一段时间来访问正确的url。使用以下参数,sqlmap将会每隔一段时间访问一个正确的URL,并且不会对其进行任何注入。
--safe-url=SAFEURL URL address to visit frequently during testing
--safe-post=SAFE.. POST data to send to a safe URL
--safe-req=SAFER.. Load safe HTTP request from a file
--safe-freq=SAFE.. Regular requests between visits to a safe URL
参数 | 解释 |
---|---|
--safe-url=SAFEURL | 指定安全链接URL |
--safe-post=SAFE | 指定安全连接端口 |
--safe-req=SAFER | 从文件加载安全请求 |
--safe-freq=SAFE | 指定访问安全链接的频率 |
14、 --skip-urlencode
根据参数的位置(例如:GET),其值可能会被默认进行 URL 编码。在某些情况下,后端 Web 服务器不遵循 RFC 标准,并要求以原始非编码形式发送参数值。在这种情况下可以使用
--skip-urlencode
。
案例:
python sqlmap.py -u "http://example.com/vulnerable.php?id=1" --skip-urlencode
15、 --csrf相关
许多站点有使用 token 的反 CSRF 防护,在每个页面的响应随机设置隐藏字段值。sqlmap 将自动尝试识别并绕过这种防护,同时支持
--csrf-token
和--csrf-url
等选项用来做进一步调整。选项
--csrf-token
用于设置包含随机 token 的隐藏字段的名称。这在网站对这些字段使用非标准名称的情况下是非常有用的。选项--csrf-url
用于从任意有效的 URL 地址获取 token 值。这在目标网址在初始地不包含必需的 token 值,而需要从其他地方提取时是非常有用的。
--csrf-token=CSR.. Parameter used to hold anti-CSRF token
--csrf-url=CSRFURL URL address to visit for extraction of anti-CSRF token
--csrf-method=CS.. HTTP method to use during anti-CSRF token page visit
--csrf-data=CSRF.. POST data to send during anti-CSRF token page visit
--csrf-retries=C.. Retries for anti-CSRF token retrieval (default 0)
参数 | 解释 |
---|---|
--csrf-token=CSR | 指定包含token的参数 |
--csrf-url=CSRFURL | 指定URL |
--csrf-method=CS | 指定请求方法 |
--csrf-data=CSRF | 指定POST方法请求的数据 |
--csrf-retries=C | 指定重试次数 |
16、 杂项
--force-ssl Force usage of SSL/HTTPS
--chunked Use HTTP chunked transfer encoded (POST) requests
--hpp Use HTTP parameter pollution method
--eval=EVALCODE Evaluate provided Python code before the request (e.g. "import hashlib;id2=hashlib.md5(id).hexdigest()")
参数 | 解释 |
---|---|
--force-ssl | 强制SSL连接 |
--chunked | 使用分块传输编码请求 |
--hpp | 使用参数混淆 |
--eval=EVALCODE | 在请求之前执行一段Python代码 |
案例:使用当前 GET 请求中的 id
参数值重新计算出对应的 MD5 哈希值,从而替换掉原来的 hash
参数值。
python sqlmap.py -u "http://www.target.com/vuln.php?id=1&hash=c4ca4238a0b9238\
20dcc509a6f75849b" --eval="import hashlib;hash=hashlib.md5(id).hexdigest()"
Enumeration模块
该模块用于导出数据库的信息。
Enumeration:These options can be used to enumerate the back-end databasemanagement system information, structure and data contained in thetables-a, --all Retrieve everything-b, --banner Retrieve DBMS banner--current-user Retrieve DBMS current user--current-db Retrieve DBMS current database--hostname Retrieve DBMS server hostname--is-dba Detect if the DBMS current user is DBA--users Enumerate DBMS users--passwords Enumerate DBMS users password hashes--privileges Enumerate DBMS users privileges--roles Enumerate DBMS users roles--dbs Enumerate DBMS databases--tables Enumerate DBMS database tables--columns Enumerate DBMS database table columns--schema Enumerate DBMS schema--count Retrieve number of entries for table(s)--dump Dump DBMS database table entries--dump-all Dump all DBMS databases tables entries--search Search column(s), table(s) and/or database name(s)--comments Check for DBMS comments during enumeration--statements Retrieve SQL statements being run on DBMS-D DB DBMS database to enumerate-T TBL DBMS database table(s) to enumerate-C COL DBMS database table column(s) to enumerate-X EXCLUDE DBMS database identifier(s) to not enumerate-U USER DBMS user to enumerate--exclude-sysdbs Exclude DBMS system databases when enumerating tables--pivot-column=P.. Pivot column name--where=DUMPWHERE Use WHERE condition while table dumping--start=LIMITSTART First dump table entry to retrieve--stop=LIMITSTOP Last dump table entry to retrieve--first=FIRSTCHAR First query output word character to retrieve--last=LASTCHAR Last query output word character to retrieve--sql-query=SQLQ.. SQL statement to be executed--sql-shell Prompt for an interactive SQL shell--sql-file=SQLFILE Execute SQL statements from given file(s)
1、 -a, --all 获取所有数据
python sqlmap.py -u "http://ctf/sql_labs/Less-1/?id=1" -a
python sqlmap.py -u "http://ctf/sql_labs/Less-1/?id=1" --all
2、 -b, --banner 获取数据库,服务器和中间件版本号
python sqlmap.py -u "http://ctf/sql_labs/Less-1/?id=1" -b
3、 获取注入页面数据库管理员信息
--current-user Retrieve DBMS current user
--current-db Retrieve DBMS current database
--hostname Retrieve DBMS server hostname
--is-dba Detect if the DBMS current user is DBA
参数 | 解释 |
---|---|
--current-user | 获得网页DBMS的当前用户 |
--current-db | 获得网页DBMS的使用数据库 |
--hostname | 获得网页主机名 |
--is-dba | 检查当前用户是否是数据库管理员 |
4、 列出数据库的指定信息
指定要列出的信息,可根据-U、-T、-D指定列出数据的条件,也可根据 --exclude-sysdbs 来忽略一些系统表。
--users Enumerate DBMS users
--passwords Enumerate DBMS users password hashes
--privileges Enumerate DBMS users privileges
--roles Enumerate DBMS users roles
--dbs Enumerate DBMS databases
--tables Enumerate DBMS database tables
--columns Enumerate DBMS database table columns
--schema Enumerate DBMS schema
参数 | 解释 |
---|---|
--users | 列出所有DBMS用户 |
--passwords | 列出所有DBMS用户密码的哈希值
|
--privileges | 列出所有DBMS用户权限
|
--roles | 列出所有DBMS用户角色
|
--dbs | 列出 DBMS 所有数据库 |
--tables | 列出 DBMS 所有数据表 |
--columns | 列出 DBMS 所有列 |
--schema | 列出DBMS 所有模式 |
5、 --count 获取表的条目数
--count Retrieve number of entries for table(s)
python sqlmap.py "http://ctf/sql_labs/Less-1/?id=1" --count
用于获取表的条目数量,可以用-D、-T来指定数据库和表,未指定会输出所有可访问的数据库和表,也可以用 --exclude-sysdbs 来忽略一些系统表。
python sqlmap.py "http://ctf/sql_labs/Less-1/?id=1" --count -exclude-sysdbs
6、 拖库处理
--dump Dump DBMS database table entries
--dump-all Dump all DBMS databases tables entries
参数 | 解释 |
---|---|
--dump | 导出数据库表条目 |
--dump-alll | 导出所有数据库表条目 |
可以用-D、-T来指定数据库和表,未指定会输出所有可访问的数据库和表,也可以用 --exclude-sysdbs 来忽略一些系统表。 尽量少用--dump-alll,因为会产生大量访问,获取一些无效信息。
7、 --search 搜索列、表和数据库
此开关允许你在所有数据库中搜索特定的数据库名和表名,在特定的数据表中搜索特定的列名。
-C
,附带以逗号分隔的列名列表来搜索整个 DBMS。
-T
,附带以逗号分隔的表名列表来搜索整个 DBMS。
-D
,附带以逗号分隔的数据库名列表来搜索整个 DBMS。
例:
sqlmap -u "http://example.com/page?id=1" --tables -D database_name --search "your_search_term"
以上的例子:
-D :限制要搜索的数据库
--tables :列出限制数据库的所有表
--search : 根据后面的条件,搜索符号条件的表,并显示。
8、 自定义SQL
--sql-query=SQLQ.. SQL statement to be executed
--sql-shell Prompt for an interactive SQL shell
--sql-file=SQLFILE Execute SQL statements from given file(s)
参数 | 解释 |
---|---|
--sql-query=SQLQ | 指定要执行的SQL语句 |
--sql-shell | 此开关是注入后进入SQL shell的 |
--sql-file=SQLFILE | 从所给与的文件里执行SQL语句 |
9、 设置转储条件
--pivot-column=P.. Pivot column name
--where=DUMPWHERE Use WHERE condition while table dumping
--start=LIMITSTART First dump table entry to retrieve
--stop=LIMITSTOP Last dump table entry to retrieve
--first=FIRSTCHAR First query output word character to retrieve
--last=LASTCHAR Last query output word character to retrieve
参数 | 解释 |
---|---|
--pivot-column=P | 设置主键名,通常是自动选择 |
--where=DUMPWHERE | 设置导出数据的条件,用来限制范围 例如:--where="id>3" 只有 |
--start=LIMITSTART | 指定要从哪条数据开始导出,从索引0开始 |
--stop=LIMITSTOP | 指定在哪条数据停止导出。 |
--first=FIRSTCHAR | 导出的特定范围的字符,设置字符开始 仅适用于盲注技术 |
--last=LASTCHAR | 导出的特定范围的字符,设置字符结束 仅适用于盲注技术 |
10、 指定参数
-D DB DBMS database to enumerate
-T TBL DBMS database table(s) to enumerate
-C COL DBMS database table column(s) to enumerate
-X EXCLUDE DBMS database identifier(s) to not enumerate
-U USER DBMS user to enumerate
指定参数可以使一些搜索操作缩小范围,加快获取信息的效率,减少没必要的请求。
参数 | 解释 |
---|---|
-D DB | 指定数据库 |
-T TBL | 指定表 |
-C COL | 指定列 |
-X EXCLUDE | 指定忽略的标识符 |
-U USER | 指定用户名 |
参考资料:
sqlmap 用户手册 (highlight.ink)
相关文章:

Web安全:SqlMap工具
一、简介 sqlmap 是一款开源的渗透测试工具,可以自动化进行SQL注入的检测、利用,并能接管数据库服务器。它具有功能强大的检测引擎,为渗透测试人员提供了许多专业的功能并且可以进行组合,其中包括数据库指纹识别、数据读取和访问底层文件系统…...

用手机写一本电子书
第1步、进入Andi.cn网站 第2步、点击登录,注册用户 第3步、点击去创作,进入创作页面 第4步、点击右下角的小笔,写一篇文章 第5步、下翻,点击提交按钮 第6步、再写一篇文章 第7步、点击栏目设计 第8步、进入栏目设计,点…...

【网络编程】基于UDP的TFTP文件传输
1)tftp协议概述 简单文件传输协议,适用于在网络上进行文件传输的一套标准协议,使用UDP传输 特点: 是应用层协议 基于UDP协议实现 数据传输模式 octet:二进制模式(常用) mail:已经不再…...
Vue 3 + Pinia 实现网页刷新功能
概述 在现代 Web 开发中,保持用户界面的动态性和响应性至关重要。当用户触发某些操作时,例如点击按钮或者完成表单提交,我们往往需要刷新页面的一部分来展示最新的数据。本文将介绍如何使用 Vue 3 和 Pinia 来实现这一功能。 技术栈 Vue 3…...

DVWA综合靶场漏洞讲解
目录 综合靶场漏洞讲解 Brute Force Low Medium High Command Injection Low Medium High File Inclusion Low,Medium,High File Upload Low Medium High SQL Injection Low Medium High SQL Injection (Blind) Low Medium High XSS(DOM&am…...

实现Bezier样条曲线
1.给出n1 个控制点pk(xk,yk,zk),这里k可取值0-n,多项式函数公式如下 获取的单个点的代码 void zmBezier::getPoint(float u, double p[3]) {int n m_count - 1;double x 0, y 0, z 0;for(int k 0; k < n; k){x m_ctrlPoints[k][0] * BEZ_k_n(n, k, u);y m_ctrlPoin…...

MySQL中的EXPLAIN的详解
一、介绍 官网介绍: https://dev.mysql.com/doc/refman/5.7/en/explain-output.htmlhttps://dev.mysql.com/doc/refman/8.0/en/explain-output.htmlexplain(执行计划),使用explain关键字可以模拟优化器执行sql查询语句ÿ…...

LearnOpenGL——SSAO学习笔记
LearnOpenGL——SSAO学习笔记 SSAO一、基本概念二、样本缓冲三、法向半球四、随机核心转动五、SSAO着色器六、环境遮蔽模糊七、应用SSAO遮蔽因子 SSAO 一、基本概念 环境光照是我们加入场景总体光照中的一个固定光照常量,它被用来模拟光的散射(Scattering)。散射应…...

[C语言]-基础知识点梳理-文件管理
前言 各位师傅们好,我是qmx_07,今天给大家讲解文件管理的相关知识,也就是常见的 读取,删除一类的操作 文件 为什么要使用文件? 程序的数据是存储在电脑的内存中,如果程序退出,内存回收&…...

pcdn闲置带宽被动收入必看教程。第五讲:光猫更换和基础设置
PCDN闲置带宽被动收入必看教程 —— 第五讲:光猫更换和基础设置 为了从闲置带宽中获得被动收入,高效的网络设备至关重要。运营商提供的光猫通常能满足日常家用需求,但对于PCDN应用来说,它们可能不足以提供所需的高性能和稳定性。…...

工业数据采集网关简介-天拓四方
随着工业4.0和物联网(IoT)技术的深入发展,工业数据采集网关作为连接现场设备与上层管理系统的关键节点,其在智能工厂中的作用愈发凸显。本文将深入探讨工业数据采集网关的功能、特点、应用场景及其实操性,以期为读者提…...

Java 调整字符串,验证码生成
package text7;public class ZiFanz {public static void main(String[] args) {//1.定义两个字符串String strA "abcde";String strB "deabc";//2.abcde->bcdea->cdeab->deabc旋转字符串//旋转并比较boolean result cheak(strA, strB);System…...

【专题】全球商用服务机器人市场研究(2023)报告合集PDF分享(附原数据表)
原文链接:https://tecdat.cn/?p37366 近年来,随着人工智能、物联网和自动化技术的不断进步,商用服务机器人行业迅速崛起,展现出广阔的发展前景。从最初的实验室研发到如今的规模化应用,商用服务机器人已逐渐成为各行…...

SQL UA注入 (injection 第十八关)
简介 SQL注入(SQL Injection)是一种常见的网络攻击方式,通过向SQL查询中插入恶意的SQL代码,攻击者可以操控数据库,SQL注入是一种代码注入攻击,其中攻击者将恶意的SQL代码插入到应用程序的输入字段中&a…...

初阶数据结构之计数排序
非比较排序 计数排序 计数排序⼜称为鸽巢原理,是对哈希直接定址法的变形应⽤。 操作步骤: 1)统计相同元素出现次数 2)根据统计的结果将序列回收到原来的序列中 #include "CountSort.h" void Count(int* arr, int n)…...

【开端】记一次诡异的接口排查过程
一、绪论 最近碰到这么一个情况,接口请求超时。前提是两台服务器间的网络是畅通的,端口也是通,应用代码也是通。意思是在应用上,接口没有任何报错,能正常返回数据。客户端到服务端接口也能通,但是接收不到服…...

jenkins最佳实践(二):Pipeline流水线部署springCloud微服务项目
各位小伙伴们大家好呀,我是小金,本篇文章我们将介绍如何使用Pipeline流水线部署我们自己的微服务项目,之前没怎么搞过部署相关的,以至于构建流水线的过程中中也遇到了很多自己以前没有考虑过的问题,特写此篇࿰…...

第2章 C语言基础知识
第2章 C语言基础知识 1.printf()函数 在控制台输出数据,需要使用输出函数,C语言常用的输出函数为printf()。 printf()函数为格式化输出函数,其功能是按照用户指定的格式将数据输出到屏幕上。 printf(“格式控制字符串”,[输出列表]); 格式控…...

鹭鹰优化算法SBOA优化RBF神经网络的扩散速度实现多数入多输出数据预测,可以更改数据集(MATLAB代码)
一、鹭鹰优化算法介绍 鹭鹰优化算法(Secretary Bird Optimization Algorithm, SBOA)是一种新型的元启发式算法,它于2024年4月由Youfa Fu等人提出,并发表在SCI人工智能二区顶刊《Artificial Intelligence Review》上。该算法的灵感…...

MySQL基础练习题48-连续出现的数字
目录 题目 准备数据 分析数据 题目 找出所有至少连续出现三次的数字。 准备数据 ## 创建库 create database db; use db;## 创建表 Create table If Not Exists Logs (id int, num int)## 向表中插入数据 Truncate table Logs insert into Logs (id, num) values (1, 1) i…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...

Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...

QT开发技术【ffmpeg + QAudioOutput】音乐播放器
一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下,音视频内容犹如璀璨繁星,点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频,到在线课堂中知识渊博的专家授课,再到影视平台上扣人心弦的高清大片,音…...

Linux基础开发工具——vim工具
文章目录 vim工具什么是vimvim的多模式和使用vim的基础模式vim的三种基础模式三种模式的初步了解 常用模式的详细讲解插入模式命令模式模式转化光标的移动文本的编辑 底行模式替换模式视图模式总结 使用vim的小技巧vim的配置(了解) vim工具 本文章仍然是继续讲解Linux系统下的…...