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

Sqlmap入门

原理

在owasp发布的top10 漏洞里面,注入漏洞一直是危害排名第一,其中数据库注入漏洞是危害的。

当攻击者发送的sql语句被sql解释器执行,通过执行这些恶意语句欺骗数据库执行,导致数据库信息泄漏

分类

按注入类型

常见的sql注入按照参数类型可分为两种:数字型和字符型

当发送注入点的参数为整数时,比如ID,num,page等,这种形式的就属于数字型注入漏洞。同样,当注入点是字符串时,则称为字符型注入,字符型注入需要引号来闭合

按返回结果

  • 回显注入:可以直接在存在注入点的当前页面中获取返回结果。

  • 报错注入:程序将数据库的返回错误信息结果直接显示在页面中,虽然没有返回数据库查询的结果,但是可以构造一些报错语句从错误信息中获取想要的结果。

  • 盲注:程序后端屏蔽了数据库的错误信息,没有直接显示结果也没有显示数据库报错信息,只能通过数据库的逻辑和延时函数来判断注入的结果。根据表现形式的不同,盲注又分为based boolean(返回结果只有对与错) 和 based time(由返回结果的时间判断) 两种

    select IF(ASCII(SUBSTR(DATABASE(),1,1))>97, 1, SLEEP(3))
    

按注入位置与方式

按照注入位置及方式可分为:post注入,get注入,cookie注入,盲注,延时注入,搜索注入,base64注入,无论分类如何,都可以归纳为以上两种形式

使用Mybatis的预先编译即可很好的预防sql注入

Sqlmap概述

--wizard Simple wizard interface for beginner users

-- sqlmap-shell Prompt for an interactive sqlmap shell

使用--sqlmap-shell无需每次输入sqlmap

概述

  • 支持六种sql注入

    • boolean-base blind:基于布尔的盲注,即可以根据返回页面判断条件真假的注入

    • time-base blind:基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断

      select IF(ASCII(SUBSTR(DATABASE(),1,1))>97, 1, SLEEP(3))
      

      如果库名的第一个字母大于a,返回1否则sleep 3 sec

    • error-based:基于报错注入,即页面会返回错误信息,或则把注入的语句的结果直接返回在页面种

    • UNION query-based:联合查询注入,可以使用union的情况下的注入;

    • stacked queries and out-of-band:堆查询注入,可以同时执行多条语句的执行时的注入。

Options

  • -h, --help Show basic help message and exit

    显示基本的帮助命令

  • -hh Show advanced help message and exit

    显示高级的帮助命令

  • --version Show program's version number and exit

    显示sqlmap version

  • -v VERBOSE Verbosity level: 0-6 (default 1)

    以verbose的形式输出结果

    • 0: Show only Python tracebacks, error and critical messages.
    • 1: Show also information and warning messages.
    • 2: Show also debug messages.
    • 3: Show also payloads injected.
    • 4: Show also HTTP requests.
    • 5: Show also HTTP responses' headers.
    • 6: Show also HTTP responses' page content.
sqlmap -d "mysql://root:12345@192.168.80.129:3306/mysql" -v3

Target

必须要指定一个target

  • -d DIRECT Connection string for direct database connection

    与数据库直连,需要该数据库的账户和密码,以及数据库的远程访问权限

    Pattern:

    sqlmap -d DBMS://username:passwd@DBMS_HOST:PORT/database

    Example:

    sqlmap -d "mysql://root:12345@192.168.80.129:3306/mysql"
    
  • -u URL, --url=URL Target URL (e.g. "http://www.site.com/vuln.php?id=1")

    与URL连接,如果以默认的80端口或是443对外开放web服务无需添加端口

  • -l LOGFILE Parse target(s) from Burp or WebScarab proxy log file

    使用burpsuite的request log 做为参数, 需要在burp中设置记录日志

    sqlmap -l filename
    
  • -m BULKFILE Scan multiple targets given in a textual file

    使用文本文件, 我们有文件url.txt 内容如下

      www.target1.com/vuln1.php?q=foobarwww.target2.com/vuln2.asp?id=1www.target3.com/vuln3/id/1*
    

    然后可用使用如下命令让Sqlmap测试这些URL是否存在注入漏洞:

    sqlmap -m  url.txt
    
  • -r REQUESTFILE Load HTTP request from a file

    可以将一个HTTP请求保存在文件中,然后使用参数“-r”加载该文件,Sqlmap会解析该文件,从该文件分析目标并进行测试。

    设有如下所示的HTTP请求保存在文件get.txt中:

      GET /user.php?id=1 HTTP/1.1Host: 192.168.56.101:8080User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-SG,en-US;q=0.7,en;q=0.3Accept-Encoding: gzip, deflateDNT: 1Connection: closeUpgrade-Insecure-Requests: 1123456789
    

    则使用如下命令让Sqlmap解析该文件,以该文件中HTTP请求目标为攻击目标进行测试:

      python sqlmap.py -r get.txt
    
  • -g GOOGLEDORK Process Google dork results as target URLs

    使用谷歌特殊查询做为参数

    sqlmap -g "inurl:.php?id=1
    
  • -c CONFIGFILE Load options from a configuration INI file

    使用INI配置文件做为参数

Request

决定怎么连接target

  • --method=METHOD Force usage of given HTTP method (e.g. PUT)

    一般来说,Sqlmap能自动判断出是使用GET方法还是POST方法,但在某些情况下需要的可能是PUT等很少见的方法

    sqlmap -u "http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1" --method=put
    
  • --data=DATA Data string to be sent through POST (e.g. "id=1")

    做为post的参数,当有多个参数时,使用&拼接。

    这里我们先用burpsuite拦截请求,查看post的参数

由此发现参数分别是uname,passwd,submit

sqlmap -u "http://192.168.80.129/sqli/Less-11/" --data="uname=123&passwd=123&submit=Submit" 

通过sqlmap获取到注入的sql,通过burp可以校验

  • --param-del=PARA.. Character used for splitting parameter values (e.g. &)

    通过--param-del=";"来指定delimeter

    sqlmap -u "http://localhost/dvwa/vulnerabilities/brute/" --data="username=admin;password=password" --param-del=";"
    

http-headers

sqlmap如果请求需要cookie, sqlmap需要手动设置cookie值。

指定--level >=2 检测cookie是否有sql注入

  • --cookie=COOKIE HTTP Cookie header value (e.g. "PHPSESSID=a8d127e..")

    当检测需要使用cookie时,使用--cookie。默认使用分号分隔,可以通过--cookie-del来指定分隔符

    sqlmap -u "http://192.168.80.129/dvwa/vulnerabilities/sqli_blind/#" --data="id=2&Submit=Submit" --cookie="security=medium; PHPSESSID=psraicopdtede7ok52erpr08bo"
    
  • --load-cookies=L.. File containing cookies in Netscape/wget format

    从文件中载入Netscape或wget格式的cookie

  • --drop-set-cookie Ignore Set-Cookie header from response

    将响应体中的cookie丢弃

指定--level >=3 检测user-agent是否有sql注入

  • --user-agent=AGENT HTTP User-Agent header value

    设置请求头中user-agent。默认使用sqlmap/1.0-dev-xxxxxxx (http://sqlmap.org)做为User-Agent

  • --random-agent Use randomly selected HTTP User-Agent header value

    从usr/share/sqlmap/data/txt/user-agents.txt中随机取出一个User-Agent。注意,在一次会话中只是用同一个User-Agent,并不是每发一个HTTP请求包,都随机一个User-Agent。起到反检测的作用

    sqlmap -u "http://192.168.80.129/dvwa/vulnerabilities/sqli_blind/#" --data="id=2&Submit=Submit" --drop-set-cookie --random-agent
    

    使用了user-agent

    未使用user-agent

指定--level >= 5 检测host是否存在sql注入

  • --host=HOST HTTP Host header value

    指定请求头中的HOST

指定--level>=3 检测referer是否存在sql注入

  • --referer=REFERER HTTP Referer header value

    指定请求头中referer,用来伪造请求参数

  • -H HEADER, --hea.. Extra header (e.g. "X-Forwarded-For: 127.0.0.1")

    指定额外单一的请求头,如token

    --headers=HEADERS Extra headers (e.g. "Accept-Language: fr\nETag: 123")

    指定多个请求头,需要使用\n换行

    sqlmap -u "http://192.168.80.129/sqli/Less-3/?id=1" --banner -headers="token:123\n config:abc"
    

  • --auth-type=AUTH.. HTTP authentication type (Basic, Digest, NTLM or PKI)

    指定认证的方式

  • --auth-cred=AUTH.. HTTP authentication credentials (name:password)

    指定认证的用户名和密码

proxy

  • --proxy=PROXY Use a proxy to connect to the target URL

    指定代理,用于隐藏真实IP

    sqlmap -u "http://192.168.80.129/sqli/Less-3/?id=1" --proxy="http://192.168.80.1:80"
    
  • --proxy-file=PRO.. Load proxy list from a file

    使用文件中的代理

  • --tor Use Tor anonymity network

    使用tor匿名网络

  • --tor-type=TORTYPE Set Tor proxy type (HTTP, SOCKS4 or SOCKS5 (default))

    指定代理的模式,默认使用SOCKS5

action

  • --ignore-code=IG.. Ignore (problematic) HTTP error code (e.g. 401)

    忽略对指定status code的响应

    sqlmap -u "http://192.168.80.129/sqli/Less-3/?id=1"  --ignore-code=401
  • --delay=DELAY Delay in seconds between each HTTP request

    设置每次请求之间的间隔,可以有效躲避检测

    sqlmap -u "http://192.168.80.129/sqli/Less-3/?id=1" --delay=1
  • --timeout=TIMEOUT Seconds to wait before timeout connection (default 30)

    设置连接的超时时间

  • --retries=RETRIES Retries when the connection timeouts (default 3)

    设置重试次数

  • --randomize=RPARAM Randomly change value for given parameter(s)

    随机生成HTTP请求中的参数,这里表示随机生成id,可以避免触发安全机制

    sqlmap -u http://192.168.80.129/sqli/Less-3/?id=1 --randomize=id
    
  • --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.. Test requests between two visits to a given safe URL

    有时服务器检测到某个客户端错误请求过多会对其进行屏蔽,而Sqlmap的测试往往会产生大量的错误请求,为避免被屏蔽,可以是不是产生几个正常的请求以迷惑服务器。这里所谓的安全URL是指访问会返回200、没有任何报错的URL。相应地,Sqlmap也不会对安全URL进行任何注入测试。

  • --force-ssl Force usage of SSL/HTTPS

    强制使用SSL通道

Optimization

These options can be used to optimize the performance of sqlmap

可以加快sqlmap的探测速度

  • -o Turn on all optimization switches

    使用所有的加快探测速度的手段

  • --keep-alive Use persistent HTTP(s) connections

    设置连接为长连接,默认使用Close,连接一次就会关闭

  • --threads=THREADS Max number of concurrent HTTP(s) requests (default 1)

    设定并发的线程

  • --predict-output Predict common queries output

    预测输出,与--thread不兼容

  • --null-connection Retrieve page length without actual HTTP response body

    返回Content-length,不接收ResponseBody

Injection

These options can be used to specify which parameters to test for, provide custom injection payloads and optional tampering scripts

用于指定检测的参数, 客制化payload

  • -p TESTPARAMETER Testable parameter(s)

    指定需要探测的参数或是报文头,当有多个参数时使用逗号分隔

    sqlmap -u "http://192.168.80.129/sqli/Less-1/?id=1&name=chz&pwd=123" -p "id,pwd" -o  --current-db
    

    同样也可以指定user-agent

    sqlmap -u "http://192.168.80.129/sqli/Less-1/?id=1&name=chz&pwd=123" -p user-agent -o  --current-db
    
  • --skip=SKIP Skip testing for given parameter(s)

    不探测指定的参数

  • --skip-static Skip testing parameters that not appear to be dynamic

    跳过非动态的参数探测

  • --param-exclude=.. Regexp to exclude parameters from testing (e.g. "ses")

    使用正则排除

    sqlmap -u http://192.168.80.129/sqli/Less-1/?id"=1&name=chz&pwd=123" --param-exclude="Cache.*" -o
    
  • --dbms=DBMS Force back-end DBMS to provided value

    指定DBMS,如Oracle,MySQL。会自动识别

    sqlmap -u http://192.168.80.129/sqli/Less-1/?id"=1&name=chz&pwd=123"  -o --dbms="MySQL"
    
  • --os=OS Force back-end DBMS operating system to provided value

    指定操作系统,如windows,linux。会自动识别

  • --invalid-bignum Use big numbers for invalidating values

    --invalid-logical Use logical operations for invalidating values

    --invalid-string Use random strings for invalidating values

    用大的数据做为注入的无效参数

    在sqlmap需要使原始参数值无效(例如id=12)时,它使用经典的否定(例如id=-13)。有了这个开关,就可以强制使用指定的来替换该错误参数

  • --prefix=PREFIX Injection payload prefix string
    --suffix=SUFFIX Injection payload suffix string

    使用指定的前后缀来修饰payload

  • --no-escape Turn off string escaping mechanism

    有时Sqlmap会使用用单引号括起来的字符串值作为payload,如“SELECT ‘foobar’”,默认地这些值会被编码,如上例将被编码为:
    “SELECT CHAR(102)+CHAR(111)+CHAR(111)+CHAR(98)+CHAR(97)+CHAR(114))”。这样做既可以混淆视听让人一时难以洞察payload的内容又可以在后台服务器使用类似magic_quote或mysql_real_escape_string这样的转义函数的情况下字符串不受影响。当然在某些情况下需要关闭字符串编码,如为了缩减payload长度,用户可以使用“–no-escape”来关闭字符串编码。

  • --tamper=TAMPER Use given script(s) for tampering injection data

    除了用CHAR()编码字符串外Sqlmap没有对payload进行任何混淆。
    该参数用于对payload进行混淆以绕过IPS或WAF。
    该参数后跟一个tamper脚本的名字。若该tamper脚本位于sqlmap的安装目录的tamper/目录中,就可以省略路径和后缀名,只写文件名。
    多个tamper脚本之间用空格隔开。

    sqlmap -u http://192.168.80.129/sqli/Less-1/?id"=1&name=chz&pwd=123"  --tamper=space2comment.py
    

Detection

These options can be used to customize the detection phase

  • --level=LEVEL Level of tests to perform (1-5, default 1)

    设置探测等级

    GET and POST parameters are always tested, HTTP Cookie header values are tested from level 2 and HTTP User-Agent/Referer headers' value is tested from level 3.

  • --risk=RISK Risk of tests to perform (1-3, default 1)

    设置风险等级

Techniques

These options can be used to tweak testing of specific SQL injection techniques

  • --technique=TECH SQL injection techniques to use (default "BEUSTQ")

    指定使用什么类型的SQL注入来探测,默认使用所有

    1. B: Boolean-based blind
    2. E: Error-based
    3. U: Union query-based
    4. S: Stacked queries
    5. T: Time-based blind
    6. Q: Inline queries
    sqlmap -u "http://192.168.80.129/sqli/Less-1/?id=1" --technique=ES
    
  • --time-sec=TIMESEC Seconds to delay the DBMS response (default 5)

    指定基于时间的盲注的sleep时间

Fingerprint

  • -f, --fingerprint Perform an extensive DBMS version fingerprint

    获取DBMS的版本信息

Enumeration

These options can be used to enumerate the back-end database management system information, structure and data contained in the tables. Moreover you can run your own SQL statements.

额外条件-D-T-C--start--stop

枚举数据库中信息

  • -a, --all Retrieve everything

    同时还可以获取账户密码的Hash ,也包括解码一些常见的明文密码

  • -b, --banner Retrieve DBMS banner

    获取数据库的bann信息

  • --current-user Retrieve DBMS current user

    获取数据库当前的用户

  • --hostname Retrieve DBMS server hostname

    获取主机名

  • --users Enumerate DBMS users

    获取所有用户名

  • --privileges Enumerate DBMS users privileges

    获取用户权限,使用-U指定用户

  • --passwords Enumerate DBMS users password hashes

    获取密码哈希值以及解密,使用-U指定用户

    sqlmap -u "http://192.168.80.129/sqli/Less-1/?id=1" -o --password -U root
    

    可以使用如下格式尝试登入数据库,需要远程登入授权才能登入

    mysql -h 192.168.80.129 -u root -p
    
  • --dbs Enumerate DBMS databases

    获取所有的数据库

  • --tables Enumerate DBMS database tables

    如果没有指定 -D,枚举所有数据库中所有表。使用--exclude-sysdbs来排除系统的表

  • --columns Enumerate DBMS database table columns

    通过-D指定DB,如果没有指定DB就使用当前探测的数据库;使用-T指定table,如果没有指定查询所有table的字段以及类型;使用-C指定查询某一列

    sqlmap -u "http://192.168.80.129/sqli/Less-1/?id=1" -o --columns -D mysql
    
  • --schema Enumerate DBMS schema

    列出所有的数据库,表名,字段名,字段类型。使用--exclude-sysdbs排除系统数据库

  • --dump Dump DBMS database table entries

    获取表中的详细信息,并存储到本地

    sqlmap -u "http://192.168.80.129/sqli/Less-1/?id=1" --dump -D security -T users 
    

    !

    可以使用-D-T-C; 还可以使用--start--stop查询指定行数, 起到分页查询的功能

    sqlmap -u "http://192.168.80.129/sqli/Less-1/?id=1" --dump -D security -T users --start 1 --stop 2
    
  • --dump-all Dump all DBMS databases tables entries

    一次性存储所有数据库中的所有表,可以和--exclude-sysdbs一起使用

  • --search Search column(s), table(s) and/or database name(s)

    所属指定的库名,表名,列名,可以采用模糊匹配。需要配合-D,-T-C一起使用

    sqlmap -u "http://192.168.80.129/sqli/Less-1/?id=1" --search -D security -C "pass,name"
    

    多个参数时使用逗号隔开

  • --sql-shell Prompt for an interactive SQL shell

    以shell的格式,连接当前被探测的数据库,可以使用MySQL语法

Brute force

  • --common-tables Check existence of common tables

    如果--tables不能获取信息,需要采用该命令。通常由于以下几点造成

    • The database management system is MySQL < 5.0 where information_schema is not available.
    • The database management system is Microsoft Access and system table MSysObjects is not readable - default setting.
    • The session user does not have read privileges against the system table storing the scheme of the databases.
  • --common-columns Check existence of common columns

    as mentioned before

File system access

These options can be used to access the back-end database management system underlying file system

读取后端目标及中的文件

  • --file-read=FILE.. Read a file from the back-end DBMS file system

  • --file-write=FIL.. Write a local file on the back-end DBMS file system

    --file-dest=FILE.. Back-end DBMS absolute filepath to write to

Operating system access

Windows registry access

General

These options can be used to set some general working parameters

设置通用参数

sqlmap第一次查询target时,会将结果缓存到session文件中,后面再次查询时就直接从session文件中获取结果

  • -s SESSIONFILE Load session from a stored (.sqlite) file

    加载一个SESSIONFILE,文件通常存储在~/.local/share/sqlmap/output/192.168.80.129

    qlmap -u "http://192.168.80.129/sqli/Less-1/?id=1" -s ~/.local/share/sqlmap/output/192.168.80.129/session.sqlite 
    

    能跳过检测,直接给出检测结果。

  • -t TRAFFICFILE Log all HTTP traffic into a textual file

    把所有的HTTP(s)流量存入日志中,主要用于调试目的

    sqlmap -u "http://192.168.80.129/sqli/Less-1/?id=1" -t /root/Desktop/target.txt
    
  • --batch Never ask for user input, use the default behavior

    使用默认做为选项

  • --charset=CHARSET Blind SQL injection charset (e.g. "0123456789abcdef")

    使用指定的字符集

    sqlmap -u "http://192.168.80.129/sqli/Less-1/?id=1" --charset="123456789qazwsxedcrfv"
    
  • --crawl=CRAWLDEPTH Crawl the website starting from the target URL

    爬取指定url所有的子url, 并对他们进行sql注入检测

    sqlmap -u "http://192.168.80.129/sqli" --crawl=3 --batch 
    

    由于访问所有url,就不需要通过url指定注入点

  • --forms Parse and test forms on target URL

    检查请求是否以表单提交,并检测sql注入

    sqlmap -u "http://192.168.80.129/sqli/Less-11?id=12" --forms
    
  • --eta Display for each output the estimated time of arrival

    用于输出展示,数据库内容的进度条

    sqlmap -u "http://192.168.80.129/sqli/Less-1?id=12" -D security -T users --dump --fresh-queries --batch --eta
    
  • --flush-session Flush session files for current target

    无视session文件的结果,重新进行检测注入点

  • --fresh-queries Ignore query results stored in session file

    无视session文件的结果,重新检查数据库

  • --parse-errors Parse and display DBMS error messages from responses

    显示插入payload时,数据库中返回的错误信息

  • --save=SAVECONFIG Save options to a configuration INI file

    将当前执行的命令存储成配置文件,下次可以通过-c参数来调用

    sqlmap -u "http://192.168.80.129/sqli/Less-2/?id=1" --save="/root/Desktop/temp.txt"
    sqlmap -c "root/Desktop/temp.txt"
    
  • --har=HARFILE Log all HTTP traffic into a HAR file

    将所有的请求和响应存储成json格式

    sqlmap -u "http://192.168.80.129/sqli/Less-2/?id=1" --har="/root/Desktop/temp.har"
    

Miscellaneous

杂项

  • --cleanup Clean up the DBMS from sqlmap specific UDF and table

    清除sqlmap入侵后端后留下临时表或udf,强烈推荐

  • --list-tampers Display list of available tamper scripts

    列出所有的tamper脚本

    sqlmap --list-tampers
    
  • --mobile Imitate smartphone through HTTP User-Agent header

    模仿手机的HTTP user-agent

  • --identify-waf Make a thorough testing for a WAF/IPS protection

    检测数据库服务器有无使用WAF

  • --skip-waf Skip heuristic detection of WAF/IPS protection

    绕过waf

    sqlmap -u "http://192.168.80.129/sqli/Less-7/?id=1" --skip-waf
    

最后我也整理了一些网络安全(黑客)方面的学习进阶资料

如果你想跟同道中人交流

相关文章:

Sqlmap入门

原理 在owasp发布的top10 漏洞里面&#xff0c;注入漏洞一直是危害排名第一&#xff0c;其中数据库注入漏洞是危害的。 当攻击者发送的sql语句被sql解释器执行&#xff0c;通过执行这些恶意语句欺骗数据库执行&#xff0c;导致数据库信息泄漏 分类 按注入类型 常见的sql注入…...

迈向 “全能管家” 之路:机器人距离终极蜕变还需几步?

【图片来源于网络&#xff0c;侵删】 这是2024年初Figure公司展示的人形机器人Figure 01&#xff0c;他可以通过观看人类的示范视频&#xff0c;在10小时内经过训练学会煮咖啡&#xff0c;并且这个过程是完全自主没有人为干涉的&#xff01; 【图片来源于网络&#xff0c;侵删】…...

移动端 REM 适配

移动端 REM 适配 Vant 中的样式默认使用 px 作为单位&#xff0c;如果需要使用 rem 单位&#xff0c;推荐使用以下两个工具&#xff1a; postcss-pxtorem 是一款 postcss 插件&#xff0c;用于将单位转化为 remlib-flexible 用于设置 rem 基准值 下面我们分别将这两个工具配…...

逐笔成交逐笔委托Level2高频数据下载和分析:20241230

逐笔委托逐笔成交下载 链接: https://pan.baidu.com/s/11Tdq06bbYX4ID9dEaiv_lQ?pwdcge6 提取码: cge6 Level2逐笔成交逐笔委托数据分享下载 利用Level2的逐笔交易和委托数据&#xff0c;这种以毫秒为单位的详细信息能揭露众多关键信息&#xff0c;如庄家意图、伪装行为&…...

C#实现字符串反转的4种方法

见过不少人、经过不少事、也吃过不少苦&#xff0c;感悟世事无常、人心多变&#xff0c;靠着回忆将往事串珠成链&#xff0c;聊聊感情、谈谈发展&#xff0c;我慢慢写、你一点一点看...... 1、string.Reverse 方法 string content "Hello World";string reverseStri…...

UDP 单播、多播、广播:原理、实践

一、引言 在计算机网络通信领域&#xff0c;UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;是一种重要的传输层协议。它以无连接、低开销的特点&#xff0c;在众多实时性要求高的应用场景中发挥关键作用。UDP 支持单播、多播和广播三种通信模式…...

深入浅出:Go语言中的bytes包与字节串操作详解

标题:深入浅出:Go语言中的bytes包与字节串操作详解 引言 在Go语言的世界里,bytes包是一个非常重要的标准库,它为开发者提供了高效处理字节切片(byte slice)的功能。无论是处理二进制数据、UTF-8编码的字符串,还是进行高效的数据读写操作,bytes包都扮演着不可或缺的角色…...

数据库存储上下标符号,sqlserver 2008r2,dm8

sqlserver 2008r2&#xff1a; 数据类型需要用nvarchar插入数据时字符串前需要用N create table test( col1 varchar(50), col2 nvarchar(50) ) insert into test(col1,col2) values(U⁴⁵⁶⁷⁸⁹⁰D₁₂₃₄₅₆₇₈₉₀,U⁴⁵⁶⁷⁸⁹⁰D₁₂₃₄₅₆₇₈₉₀) insert into…...

LabVIEW串口通信调试与数据接收问题

在使用LabVIEW进行串口通信时&#xff0c;常常会遇到无法接收数据的情况。这可能与串口设置、连接、设备响应等多方面因素相关。本文将详细讨论如何使用LabVIEW进行串口通信&#xff0c;并提供常见问题的排查与解决方法&#xff0c;帮助用户更高效地进行数据接收调试。通过调整…...

oneplus3t-lineage-14编译-android7

lineageOS-14(android7)的开发者模式/usb调试(adb)有root功能, 而lineageOS-16(android9)无 oneplus3t-lineage-14编译-android7 1 清华linageos镜像 x lineage-14.1-20180223-nightly-oneplus3-signed.zip ntfs分区挂载为普通用户目录 , ext4分区挂载为普通用户目录 bfs…...

存储过程(SQL)

1.存储过程 存储过程&#xff08;Stored Procedure&#xff09;是一组为了完成特定功能的SQL语句集&#xff0c;经编译后存储在数据库中&#xff0c;用户通过指定存储过程的名字并给定参数&#xff08;如果该存储过程带有参数&#xff09;来调用执行它。 2.MySQL存储过程创建…...

【I/O编程】UNIX文件基础

IO编程的本质是通过 API 操作 文件。 什么是 IO I - Input 输入O - Output 输出 这里的输入和输出都是站在应用&#xff08;运行中的程序&#xff09;的角度。外部特指文件。 这里的文件是泛指&#xff0c;并不是只表示存在存盘中的常规文件。还有设备、套接字、管道、链接…...

完美解决phpstudy安装后mysql无法启动

phpstudy数据库无法启动有以下几个原因。 **一、**自己在电脑上安装了MySQL数据库,MySQL的服务名为MySQL,这会与phpstudy的数据库的服务名发生冲突&#xff0c;从而造成phpstudy中的数据库无法启动&#xff0c;这时我们只需要将自己安装的MySQL的服务名改掉就行。 但是&#…...

自己造轮子-基于Ceres的GNSS-INS松耦合组合导航算法

之前硕士期间的研究课题涉及到GNSS-INS组合导航&#xff0c;入门看的武汉大学牛老师团队的KF-GINS&#xff0c;不得不说&#xff0c;大组的东西还是很棒的&#xff0c;很适合组合导航入门&#xff0c;KF-GINS主要是基于ESKF的GNSS/INS松耦合组合导航系统&#xff0c;博主就不在…...

「实战应用」如何为DHTMLX JavaScript 甘特图添加进度线

DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求&#xff0c;是最完善的甘特图图表库。 今天&#xff0c;您将学习如何使用进度线补充JavaScript 甘特图&#xff0c;以便于监控项目进度。 DHTMLX Gantt 最新试用版下载 …...

MySQL面试题2025 每日20道

1、MySQL 中的数据排序是怎么实现的&#xff1f; 简单 在 MySQL 中&#xff0c;数据排序是通过 ORDER BY 子句来实现的。当你执行一个查询语句时&#xff0c;可以在 SELECT 语句的末尾添加 ORDER BY 来指定按照哪个列进行排序&#xff0c;以及升序&#xff08;ASC&#xff09;…...

HTML学习笔记(4)

目录 一、背景相关样式 二、定位position 三、javascript 1、变量的定义 2、数据类型 3、绑定事件 一、背景相关样式 background-image: url(); // 背景图片 background-repeat: repeat; // 背景图片是否平铺 no-repeat background-size: 200px; // 背景图片尺寸 cover把…...

解决 MySQL 服务无法启动:failed to restart mysql.service unit not found

目录 前言1. 问题描述2. 问题分析3. 解决步骤 3.1 检查 MySQL 服务文件3.2 备份旧的服务文件3.3 启动 MySQL 服务3.4 验证服务状态 4. 总结结语 前言 在日常使用 MySQL 数据库时&#xff0c;有时候可能会遇到服务无法正常启动的问题。这类问题通常出现在系统更新或者服务配置…...

在 Ubuntu 上安装 Nginx 的详细指南

在Ubuntu系统中从源码安装Nginx可以让您自定义Nginx的编译选项和模块&#xff0c;以满足特定需求。以下是详细的步骤指南&#xff1a; 前提条件 更新系统包列表 sudo apt update sudo apt upgrade -y安装必要的依赖包 sudo apt install -y build-essential libpcre3 libpcre3-…...

58,【8】BUUCTF [PwnThyBytes 2019]Baby_SQL1

进入靶场 和2次注入的页面很像 不过养成查看源代码的好习惯 先访问source.zip 下载后解压&#xff0c;发现两个文件 第一个文件夹打开又有4个PHP文件 那还是先看index.php文件好了 有PHP和HTML两部分&#xff0c;下面是PHP部分代码&#xff08;HTML太长了&#xff0c;先放一…...

2.1 三个世界”与“图灵测试”:人工智能与人类智能的深度探索

“三个世界”与“图灵测试”:人工智能与人类智能的深度探索 人工智能的研究和发展,尤其是对其认知能力和智能表现的探索,早在20世纪中期就已成为科学家的热议话题。随着技术的进步,学者们提出了许多思想框架来理解人工智能的运作及其与人类智能的关系。其中,“三个世界”…...

基于微信小程序的优购电商系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

JS宏进阶: 工厂函数与构造函数

一、构造函数 在JavaScript中&#xff0c;构造函数是一种用于创建和初始化对象的特殊函数。构造函数的名字通常以大写字母开头&#xff0c;以区分于普通函数。通过new关键字调用构造函数&#xff0c;可以创建一个新的实例对象&#xff0c;并自动执行构造函数内部的代码来初始化…...

【Linux】线程全解:概念、操作、互斥与同步机制、线程池实现

&#x1f3ac; 个人主页&#xff1a;谁在夜里看海. &#x1f4d6; 个人专栏&#xff1a;《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长&#xff0c;行则将至 目录 &#x1f4da;一、线程概念 &#x1f4d6; 回顾进程 &#x1f4d6; 引入线程 &#x1f4d6; 总结 &a…...

关于ubuntu命令行连接github失败解决办法

如果发现ping github.com有问题 使用sudo gedit /ect/hosts 打开host文件 添加 140.82.114.4 github.com 发现使用git 克隆失败&#xff0c;出现 aliaubuntu:~/文档/ctest$ git clone https://github.com/LearningInfiniTensor/learning-cxx.git 正克隆到 ‘learning-cxx’… …...

# [游戏开发] [Unity游戏开发]3D滚球游戏设计与实现教程

在这篇文章中,我们将通过一个简单的3D滚球游戏的设计与实现,讲解游戏开发中的一些关键概念和技术。游戏的核心目标是让玩家控制一个小球在跑道上左右移动,躲避障碍物并尽量向前跑,直到成功或失败。通过这一过程,我们会涉及到功能点分析、场景搭建、主体控制、游戏机制等多…...

强推未发表!3D图!Transformer-LSTM+NSGAII工艺参数优化、工程设计优化!

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Transformer-LSTMNSGAII多目标优化算法&#xff0c;工艺参数优化、工程设计优化&#xff01;&#xff08;Matlab完整源码和数据&#xff09; Transformer-LSTM模型的架构&#xff1a;输入层&#xff1a;多个变量作…...

Flutter中的事件冒泡处理

在 Flutter 中&#xff0c;GestureDetector 的点击事件默认是冒泡的&#xff0c;即如果嵌套了多个 GestureDetector&#xff0c;点击事件会从最内层的 GestureDetector 开始触发&#xff0c;然后依次向外层传递。如果你希望控制事件的优先级或阻止事件冒泡&#xff0c;可以使用…...

昇腾环境ppstreuct部署问题记录

测试代码 我是在华为昇腾910B3上测试的PPStructure。 import os import cv2 from PIL import Image #from paddleocr import PPStructure,draw_structure_result,save_structure_res from paddleocr_asyncio import PPStructuretable_engine PPStructure(show_logTrue, imag…...

基于 Python 的财经数据接口库:AKShare

AKShare 是基于 Python 的财经数据接口库&#xff0c;目的是实现对股票、期货、期权、基金、外汇、债券、指数、加密货币等金融产品的基本面数据、实时和历史行情数据、衍生数据从数据采集、数据清洗到数据落地的一套工具&#xff0c;主要用于学术研究目的。 安装 安装手册见…...

在线定制/白帽seo

#!/bin/bash #################################################### # version:1.01          # # link:http://www.cnblogs.com/netsa # # qq:402151718         # # author:bekey …...

室内设计书籍/南宁百度seo建议

1&#xff0c;引理 2&#xff0c;泰勒公式 3&#xff0c;应用...

深圳网站设计深圳设计公司/免费二级域名建站

底层结构 Java中PriorityQueue通过二叉小顶堆实现&#xff0c;可以用一棵完全二叉树表示。PriorityQueue是非线程安全的&#xff0c;Java提供了PriorityBlockingQueue用于Java多线程环境。 功能介绍 优先队列的作用是能保证每次取出的元素都是队列中权值最小的。元素大小的评…...

网站 运营 外包 每个月多少钱/网络营销是干嘛的

最近有朋友说&#xff0c;年底公司业务量增大&#xff0c;又拆分出来了很多微服务模块&#xff0c;对于微服务的管理、资源编排以及调度策略花费的精力成几何倍数的增长。看到微服务k8s的云原生架构貌似能解决这些问题&#xff0c;所以想问下。我把对他的回答整理了一下&#x…...

网站做下子压缩文件的链接/semir是什么意思

Association&#xff1a;处理单一的关联对象 处理单一属性的关联关系 property&#xff1a;注入给员工中哪个属性 select&#xff1a;发送哪一条sql语句 javaType&#xff1a;把sql语句查询出的结果集&#xff0c;封装给哪个类的对象&#xff08;可以省略&#xff09; column&a…...

做网站的害处/百度统计代码安装位置

【斗蟹攻略】Navicat 为 MySQL、Oracle、PostgreSQL、SQL Server 和 MariaDB 提供安全性管理工具。用户可以新建、编辑、删除用户、授予或撤消已选择的数据库及它们数据库对象的权限。点击“用户”图标可打开用户对象列表&#xff0c;用户对象列表将显示服务器中的所有用户。下…...