xpath 是一門在 xml 文件中查詢資訊的語言。可以理解xml為資料庫,xpath就是查詢資料庫的sql語言。
xpath 使用路徑表示式來選取 xml 文件中的節點或節點集。節點是通過沿著路徑 (path) 或者步 (steps) 來選取的。
xml示例:
xpath 使用路徑表示式在 xml 文件中選取節點。節點是通過沿著路徑或者 step 來選取的。<?xml version="1.0" encoding="utf-8"?>
admin
admin888
root
root123
表示式描述
nodename
選取此節點的所有子節點。
/從根節點擊取。
//從匹配選擇的當前節點擊擇文件中的節點,而不考慮它們的位置。
.選取當前節點。
..選取當前節點的父節點。
@選取屬性。
路徑表示式
結果users
選取 users元素的所有子節點。
/users
選取根元素 users。
注釋:假如路徑起始於正斜槓( / ),則此路徑始終代表到某元素的絕對路徑!
users/user
選取屬於 users 的子元素的所有 user元素。
//user
選取所有 user 子元素,而不管它們在文件中的位置。
users//user
選擇屬於 users元素的後代的所有 user 元素,而不管它們位於 users 之下的什麼位置。
謂語用來查詢某個特定的節點或者包含某個指定的值的節點。謂語被嵌在方括號中。
在下面的**中,列出了帶有謂語的一些路徑表示式,以及表示式的結果:
路徑表示式
結果/users/user[1]
選取屬於 users 子元素的第乙個 user 元素。
/users/user[last()]
選取屬於 users 子元素的最後乙個 user 元素。
/users/user[last()-1]
選取屬於 users 子元素的倒數第二個 user 元素。
/users/user[position()<3]
選取最前面的兩個屬於 users 元素的子元素的 user 元素。
xpath注入攻擊是指利用xpath 解析器的鬆散輸入和容錯特性,能夠在 url、表單或其它資訊上附帶惡意的xpath 查詢**,以獲得許可權資訊的訪問權並更改這些資訊。xpath注入發生在當站點使用使用者輸入的資訊來構造請求以獲取xml資料。攻擊者對站點傳送經過特殊構造的資訊來**站點使用的xml是如何構造的,從而進一步獲取正常途徑下無法獲取的資料。當xml資料被用作賬戶驗證時,攻擊者還可以提公升他的許可權。
使用者密碼資訊儲存在user.xml文件中。
通過xpath語法在xml文件中查詢賬戶及密碼資訊。<?xml version="1.0" encoding="utf-8"?>
xpath語法也支援邏輯與算術運算,故可以和sql注入類似構造永真條件等運算進行注入,但xpath語法不支援注釋,故只能完全拼接語句
下面列出了可用在 xpath 表示式中的運算子:
運算子描述
例項返回值
|計算兩個節點集
//book | //cd
返回所有擁有 book 和 cd 元素的節點集+加法
6 + 410-
減法6 - 42*
乘法6 * 4
24div
除法8 div 42=
等於price=9.80
如果 price 是 9.80,則返回 true。
如果 price 是 9.90,則返回 false。
!=不等於
price!=9.80
如果 price 是 9.90,則返回 true。
如果 price 是 9.80,則返回 false。
<
小於price<9.80
如果 price 是 9.00,則返回 true。
如果 price 是 9.90,則返回 false。
<=
小於或等於
price<=9.80
如果 price 是 9.00,則返回 true。
如果 price 是 9.90,則返回 false。
>
大於price>9.80
如果 price 是 9.90,則返回 true。
如果 price 是 9.80,則返回 false。
>=
大於或等於
price>=9.80
如果 price 是 9.90,則返回 true。
如果 price 是 9.70,則返回 false。or或
price=9.80 or price=9.70
如果 price 是 9.80,則返回 true。
如果 price 是 9.50,則返回 false。
and與
price>9.00 and price<9.90
如果 price 是 9.80,則返回 true。
如果 price 是 8.50,則返回 false。
mod計算除法的餘數
5 mod 2
1注入測試:
當然,如果有回顯資料,可通過注入其他語句得到xml檔案裡全部資訊。
WEB 安全之 SQL注入《一》 盲注
sql注入是乙個比較 古老 的話題,雖然現在存在這種漏洞的站點比較少了,我們還是有必要了解一下它的危害,及其常用的手段,知己知彼方能百戰不殆。進攻與防守相當於矛和盾的關係,我們如果能清楚了解 攻擊的全過程,就可以更好的預防類似情況的出現。sql注入原理主要是攻擊者,利用被攻擊頁面的一些漏洞 通常都是...
WEB 安全之 SQL注入《一》 盲注
sql注入原理主要是攻擊者,利用被攻擊頁面的一些漏洞 通常都是程式設計師粗心大意造成的 改變資料庫執行的sql語句,從而達到獲取 非授權資訊 的目的。下面自己搭建了實驗環境用於測試。首先交待一下,測試環境 開發語言為 asp.net 資料庫使用的 msql 測試頁面模擬了普通的新聞頁面,url裡接受...
web安全學習 web安全防禦
影響web安全的主要因素就是使用者輸入的不可控,這篇文章就從乙個巨集觀的角度來分析一下如何去保證乙個應用程式的安全。為了保證web安全,首先就是要分析應用程式中那些方面容易遭受到攻擊,然後根據分析結果在制定具體的安全方案。web應用程式的基本安全問題 所有使用者的輸入都是不可信的 致使應用程式實施大...