xpath 是一門在 xml 文件中查詢資訊的語言。xpath使用路徑表示式在 xml 文件中通過元素和屬性進行導航。
<?xml version="1.0" encoding="iso-8859-1"?>
haha 1
hehe 2
因為xpath 使用路徑表示式在 xml 文件中選取節點
列出幾個常用的路徑表示式:
nodename 選取此節點的所有子節點。
/ 從根節點擊取。
// 從匹配選擇的當前節點擊擇文件中的節點,而不考慮它們的位置。
. 選取當前節點。
… 選取當前節點的父節點。
@ 選取屬性。
world 選取 world 元素的所有子節點。
/world 選取根元素world。
注釋:假如路徑起始於正斜槓( / ),則此路徑始終代表到某元素的絕對路徑!
world/china 選取屬於world的子元素的所有china元素。
//china 選取所有 china 子元素,而不管它們在文件中的位置。
world//china 選擇屬於world元素的後代的所有china元素,而不管它們位於 bookstore 之下的什麼位置。
//@lang 選取名為 lang 的所有屬性。
/world/china[1] 選取屬於world子元素的第乙個china元素。
/world/china[last()] 選取屬於 world子元素的最後乙個china元素。
/world/china[last()-1] 選取屬於world子元素的倒數第二個china元素。
/world/china[position()< 3] 選取最前面的兩個屬於world元素的子元素的china元素。
//title[@lang] 選取所有擁有名為 lang 的屬性的 title 元素。
//title[@lang=『eng』] 選取所有 title 元素,且這些元素擁有值為 eng 的 lang 屬性。
/world/china[rank<10] 選取 world 元素的所有 china 元素,且其中的 rank元素的值須小於 10。
/world/china[rank<10]/title 選取 world元素中的 china元素的所有 title 元素,且其中的 rank 元素的值須小於 10。
*匹配任何元素節點。
@ 匹配任何屬性節點。
node() 匹配任何型別的節點。
/world/* 選取 world元素的所有子元素。
//* 選取文件中的所有元素。
//title[@*] 選取所有帶有屬性的 title 元素。
學習了這麼多
來看一句xpath典型查詢語句
//users/user[loginid/text()=『xpath』 and password/text()=『xpathtest』]
在此我們可以利用與sql注入類似的原理,對這句話進行注入
//users/user[loginid/text()=『xpath』 or 『1』=『1』 and password/text()=『xpathtest』 or 『1』=『1』]
也就是進行一定的語句拼接,從而繞過驗證
這是對使用者身份認證時出現的xpath注入
閉合相應的單引號,中括號,小括號後,利用xml語法,使用**』|』**可以引用若干路徑。
成功獲取所有使用者密碼。
WEB漏洞 命令注入
命令注入 command injection 是指通過提交惡意構造的引數破壞命令語句結構。從而達到執行惡意命令的目的。檢視命令注入的流程 1 檢視是否呼叫系統命令。2 函式以及函式的引數是否可控。3 是否拼接命令注入。下面我們使用dvwa來做測試。a 我們先將安全等級調整為 low 1 檢視源 if...
31 WEB安全學習 XPath注入
xpath 是一門在 xml 文件中查詢資訊的語言。可以理解xml為資料庫,xpath就是查詢資料庫的sql語言。xpath 使用路徑表示式來選取 xml 文件中的節點或節點集。節點是通過沿著路徑 path 或者步 steps 來選取的。xml示例 admin admin888 root root1...
SQL注入漏洞接觸 高階篇
第一節 利用系統表注入sqlserver資料庫 sqlserver是乙個功能強大的資料庫系統,與作業系統也有緊密的聯絡,這給開發者帶來了很大的方便,但另一方面,也為注入者提供了乙個跳板,我們先來看看幾個具體的例子 分號 在sqlserver中表示隔開前後兩句語句,表示後面的語句為注釋,所以,這句語句...