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)
相关文章:
![](https://i-blog.csdnimg.cn/direct/9fc2f7645ba14733be8c5be738811b77.png)
Web安全:SqlMap工具
一、简介 sqlmap 是一款开源的渗透测试工具,可以自动化进行SQL注入的检测、利用,并能接管数据库服务器。它具有功能强大的检测引擎,为渗透测试人员提供了许多专业的功能并且可以进行组合,其中包括数据库指纹识别、数据读取和访问底层文件系统…...
![](https://img-blog.csdnimg.cn/ac2a6fa1a01045b3b9f0ba9c5882aab6.jpg)
用手机写一本电子书
第1步、进入Andi.cn网站 第2步、点击登录,注册用户 第3步、点击去创作,进入创作页面 第4步、点击右下角的小笔,写一篇文章 第5步、下翻,点击提交按钮 第6步、再写一篇文章 第7步、点击栏目设计 第8步、进入栏目设计,点…...
![](https://i-blog.csdnimg.cn/direct/98a753045eab4db69206f41285920a21.png)
【网络编程】基于UDP的TFTP文件传输
1)tftp协议概述 简单文件传输协议,适用于在网络上进行文件传输的一套标准协议,使用UDP传输 特点: 是应用层协议 基于UDP协议实现 数据传输模式 octet:二进制模式(常用) mail:已经不再…...
![](https://www.ngui.cc/images/no-images.jpg)
Vue 3 + Pinia 实现网页刷新功能
概述 在现代 Web 开发中,保持用户界面的动态性和响应性至关重要。当用户触发某些操作时,例如点击按钮或者完成表单提交,我们往往需要刷新页面的一部分来展示最新的数据。本文将介绍如何使用 Vue 3 和 Pinia 来实现这一功能。 技术栈 Vue 3…...
![](https://img-blog.csdnimg.cn/img_convert/d262c105b950158f2e92faf36da52a2d.png)
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…...
![](https://i-blog.csdnimg.cn/direct/ebfd03f4e34347acb813eb1b90ebc499.png)
实现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…...
![](https://i-blog.csdnimg.cn/direct/adde2c0985bd490b98df0252d5193e99.png)
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查询语句ÿ…...
![](https://i-blog.csdnimg.cn/direct/b67e47773e9d49f0bc7b8880fb6d7d5b.png)
LearnOpenGL——SSAO学习笔记
LearnOpenGL——SSAO学习笔记 SSAO一、基本概念二、样本缓冲三、法向半球四、随机核心转动五、SSAO着色器六、环境遮蔽模糊七、应用SSAO遮蔽因子 SSAO 一、基本概念 环境光照是我们加入场景总体光照中的一个固定光照常量,它被用来模拟光的散射(Scattering)。散射应…...
![](https://i-blog.csdnimg.cn/direct/fc4697f8861348ac8820fbf6d9cb10b0.png)
[C语言]-基础知识点梳理-文件管理
前言 各位师傅们好,我是qmx_07,今天给大家讲解文件管理的相关知识,也就是常见的 读取,删除一类的操作 文件 为什么要使用文件? 程序的数据是存储在电脑的内存中,如果程序退出,内存回收&…...
![](https://img-blog.csdnimg.cn/img_convert/5c2a043a555365e66f866b256645ec99.jpeg)
pcdn闲置带宽被动收入必看教程。第五讲:光猫更换和基础设置
PCDN闲置带宽被动收入必看教程 —— 第五讲:光猫更换和基础设置 为了从闲置带宽中获得被动收入,高效的网络设备至关重要。运营商提供的光猫通常能满足日常家用需求,但对于PCDN应用来说,它们可能不足以提供所需的高性能和稳定性。…...
![](https://img-blog.csdnimg.cn/img_convert/6b6093a5d8f8cab4144c01dc2f5dddf8.jpeg)
工业数据采集网关简介-天拓四方
随着工业4.0和物联网(IoT)技术的深入发展,工业数据采集网关作为连接现场设备与上层管理系统的关键节点,其在智能工厂中的作用愈发凸显。本文将深入探讨工业数据采集网关的功能、特点、应用场景及其实操性,以期为读者提…...
![](https://i-blog.csdnimg.cn/direct/d3ce2ee597fe4aff8e2cf0ea6cfc99bd.png)
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…...
![](https://i-blog.csdnimg.cn/direct/b5c7a4f13e4642a8822f93d7066c0c36.png)
【专题】全球商用服务机器人市场研究(2023)报告合集PDF分享(附原数据表)
原文链接:https://tecdat.cn/?p37366 近年来,随着人工智能、物联网和自动化技术的不断进步,商用服务机器人行业迅速崛起,展现出广阔的发展前景。从最初的实验室研发到如今的规模化应用,商用服务机器人已逐渐成为各行…...
![](https://i-blog.csdnimg.cn/direct/fdabec0c6c514d4aa64d6025032e3065.png)
SQL UA注入 (injection 第十八关)
简介 SQL注入(SQL Injection)是一种常见的网络攻击方式,通过向SQL查询中插入恶意的SQL代码,攻击者可以操控数据库,SQL注入是一种代码注入攻击,其中攻击者将恶意的SQL代码插入到应用程序的输入字段中&a…...
![](https://i-blog.csdnimg.cn/direct/06061195f5034a27a72e2d4309a0ebeb.png)
初阶数据结构之计数排序
非比较排序 计数排序 计数排序⼜称为鸽巢原理,是对哈希直接定址法的变形应⽤。 操作步骤: 1)统计相同元素出现次数 2)根据统计的结果将序列回收到原来的序列中 #include "CountSort.h" void Count(int* arr, int n)…...
![](https://i-blog.csdnimg.cn/direct/009c8d2cbed34971a2041dc72b5fffda.png)
【开端】记一次诡异的接口排查过程
一、绪论 最近碰到这么一个情况,接口请求超时。前提是两台服务器间的网络是畅通的,端口也是通,应用代码也是通。意思是在应用上,接口没有任何报错,能正常返回数据。客户端到服务端接口也能通,但是接收不到服…...
![](https://i-blog.csdnimg.cn/direct/488c3f8095b243288378632a4c889580.png)
jenkins最佳实践(二):Pipeline流水线部署springCloud微服务项目
各位小伙伴们大家好呀,我是小金,本篇文章我们将介绍如何使用Pipeline流水线部署我们自己的微服务项目,之前没怎么搞过部署相关的,以至于构建流水线的过程中中也遇到了很多自己以前没有考虑过的问题,特写此篇࿰…...
![](https://i-blog.csdnimg.cn/direct/433615690d4e43978b41541e771843ab.png#pic_center)
第2章 C语言基础知识
第2章 C语言基础知识 1.printf()函数 在控制台输出数据,需要使用输出函数,C语言常用的输出函数为printf()。 printf()函数为格式化输出函数,其功能是按照用户指定的格式将数据输出到屏幕上。 printf(“格式控制字符串”,[输出列表]); 格式控…...
![](https://i-blog.csdnimg.cn/direct/aa8cfe909b314e2cb1b966869d30bfb2.jpeg#pic_center)
鹭鹰优化算法SBOA优化RBF神经网络的扩散速度实现多数入多输出数据预测,可以更改数据集(MATLAB代码)
一、鹭鹰优化算法介绍 鹭鹰优化算法(Secretary Bird Optimization Algorithm, SBOA)是一种新型的元启发式算法,它于2024年4月由Youfa Fu等人提出,并发表在SCI人工智能二区顶刊《Artificial Intelligence Review》上。该算法的灵感…...
![](https://i-blog.csdnimg.cn/direct/61befcba12bd45b58dc2c08e433751fe.png)
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…...
![](https://i-blog.csdnimg.cn/direct/9418d289348447f6a4532fd6c74bc6d8.png)
webrtc学习笔记2
音视频采集和播放 打开摄像头并将画面显示到页面 1. 初始化button、video控件 2. 绑定“打开摄像头”响应事件onOpenCamera 3. 如果要打开摄像头则点击 “打开摄像头”按钮,以触发onOpenCamera事件的调用 4. 当触发onOpenCamera调用时 a. 设置约束条件,…...
![](https://i-blog.csdnimg.cn/direct/78488bc8a8d64c3e8c2b14f3ec6cec17.jpeg#pic_center)
Simple RPC - 06 从零开始设计一个服务端(上)_注册中心的实现
文章目录 Pre核心内容服务端结构概述注册中心的实现1. 注册中心的架构2. 面向接口编程的设计3. 注册中心的接口设计4. SPI机制的应用 小结 Pre Simple RPC - 01 框架原理及总体架构初探 Simple RPC - 02 通用高性能序列化和反序列化设计与实现 Simple RPC - 03 借助Netty实现…...
![](https://www.ngui.cc/images/no-images.jpg)
【深度学习】基于Transformers的大模型推理框架
本文旨在介绍基于transformers的decoder-only语言模型的推理框架。与开源推理框架不同的是: 本框架没有利用额外的开源推理仓库,仅基于huggingface,transformers,pytorch等原生工具进行推理,适合新手学习大模型推理流…...
![](https://i-blog.csdnimg.cn/direct/d7585aa78dc04f0e8c70d27db5031cf0.png)
电脑监控怎样看回放视频?一键解锁电脑监控回放,守护安全不留死角!高效员工电脑监控,回放视频随时查!
你是否曾好奇那些键盘敲击背后的秘密?电脑监控不仅是守护企业安全的隐形盾牌,更是揭秘高效与合规的魔法镜!一键解锁安企神监控回放,就像打开时间宝盒,让过去的工作瞬间跃然眼前。无论是精彩瞬间还是潜在风险࿰…...
![](https://i-blog.csdnimg.cn/direct/dff65b4d04c24307bd2d823a70f9c3b7.png#pic_center)
【一起学Rust | 框架篇 | Tauri2.0框架】tauri中rust和前端的相互调用(rust调用前端)
文章目录 前言1. rust中调用前端2. 如何向前端发送事件3. 前端监听事件4. 执行js代码 前言 近期Tauri 2.0 rc版本发布,2.0版本迎来第一个稳定版本,同时官方文档也进行了更新。Tauri是一个使用Rust构建的框架,可以让你使用前端技术来构建桌面…...
![](https://i-blog.csdnimg.cn/direct/2c8fe034e25144db876a5f1a5665a38a.png)
deque容器
deque容器的基本概念 deque 是 C 标准库中的双端队列(double-ended queue)容器,提供了在两端进行插入和删除操作的功能。 deque与vector区别: vector对于头部的插入删除效率低,数据量越大效率越低。deque相对而言&am…...
![](https://www.ngui.cc/images/no-images.jpg)
Redis远程字典服务器(9)—— 类型补充
类型查询传送门:Understand Redis data types | Docs 一,stream类型 官方文档对于这个类型的解释是:streams是一个数据结构,它表现得像一个 “append-only log”,就是只能往后面添加,底层是字符串&#x…...
![](https://i-blog.csdnimg.cn/direct/93c47cde17c54e1fb852a196eba263a5.png)
VMware虚拟机nat无法联通主机
VMware在nat模式下主机无法ping通虚拟机 原因: 虚拟机和对应的网卡不在一个网段 虚拟机开启了防火墙 解决方法: 首先判断虚拟机的网络ip是否和网卡在一个网段上 判断虚拟机使用的网卡 nat模式在VMware虚拟机中一般只有一个对应的网卡 如图笔者的nat网卡为VM…...
![](https://i-blog.csdnimg.cn/direct/0f9f4736f3904b6ab021b25011fe96be.png)
「字符串」详解AC自动机并实现对应的功能 / 手撕数据结构(C++)
目录 前置知识 概述 核心概念:fail指针 作用 构建 图示 Code 成员变量 创建销毁 添加词库 文本扫描 复杂度 Code 前置知识 在此前,你应该首先了解trie树(字典树)的概念: 「字符串」详解Trie࿰…...
![](https://i-blog.csdnimg.cn/direct/add618b7faec4e3387468eb64d0eb673.png)
freecad遭遇网络不同无法安装插件Addon Manager: Unexpected 0 response from server
16:31:18 Addon Manager: Unexpected 0 response from server 16:31:18 Failed to connect to GitHub. Check your connection and proxy settings. 打开freecad的插件管理器时候,有些地方,比如我在家里就不行,在公司就ok。 于是找到了解…...
在线做ppt的网站有哪些/石家庄seo网络推广
卷积神经网络(CNN) 属于人工神经网络的一种,它的权重共享的网络结构显著降低了模型的复杂度,减少了权值的数量。卷积神经网络可以直接将图片作为网络的输入,自动提取特征,并且对图片的变形(如平移、比例缩放、倾斜&…...
![](/images/no-images.jpg)
做网站得每年续费吗/揭阳seo快速排名
但凡使用mybatis,同时与spring集成使用时,接下来要说的这个问题是躲不了的。众所周知,mybatis的SqlSessionFactory在获取一个SqlSession时使用默认Executor或必须要指定一个Executor,这样一来,在同一个SqlSession的生命…...
![](https://images2015.cnblogs.com/blog/931539/201606/931539-20160616105846495-991368142.png)
公司网站大顶图怎么做/seo外链软件
1、站立会议信息: 确定本天团队成员的实验任务,讨论解决每个人遇到的问题的具体方案,以及今天需要完成的学习任务和团队任务。 站立会议照片: 2、任务进度: 由于昨天的任务是在主页面显示今天记过的账,…...
![](https://img-blog.csdnimg.cn/2020042217384474.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25ldHdvcmtodW50ZXI=,size_16,color_FFFFFF,t_70)
wordpress 最简单皮肤/哪个搜索引擎能搜敏感内容
问题起因 近日做的一个项目,我们提供jar包给其它开发方做开发,用户调用jar包里的一个功能,该功能执行后写了数据库。客户需要在该该功能执行完后能得到通知,这客户可以去数据库中取新的刷新后的数据。 什么是回调 java中一个类&…...
![](/images/no-images.jpg)
wordpress 显示全文/北京官网seo收费
1、在黄金期内一定会面临很多压力,但千万不要让自己在"焦虑"状态下沉浸很久,因为焦虑会取代你的能力。相信坚持走下去的过程中会有答案。 2、正确地审视自己的能力。中国的特殊现状造就了一大批年轻的高管,机会够好&am…...
![](https://img-blog.csdnimg.cn/img_convert/3c45519b9b619230e0f051c994fc9f3f.png)
柳州专业做网站/推广的公司
PHP的数组 比 其他语言的数组要强大很多,下面我们看一下 数组的基本概念 和 数组的定义方式:<?php /*** 数组* 直接赋值声明数组,如下:* $arr array("one">"111111","two">"222222…...