<?xml version="1.0" encoding="UTF-8"?> <heroes> <hero> <id>1</id> <login>neo</login> <password>trinity</password> <secret>Oh why didn't I took that BLACK pill?</secret> <movie>The Matrix</movie> <genre>action sci-fi</genre> </hero> <hero> <id>2</id> <login>alice</login> <password>loveZombies</password> <secret>There's a cure!</secret> <movie>Resident Evil</movie> <genre>action horror sci-fi</genre> </hero> </heroes>
表達式 |
描述 |
nodename |
選取此節點的所有子節點。 |
/ |
從根節點選取。 |
// |
從匹配選擇的當前節點選擇文檔中的節點,而不考慮它們的位置。 |
. |
選取當前節點。 |
.. |
選取當前節點的父節點。 |
@ |
選取屬性。 |
注意:如果 XPath 的開頭是一個斜線(/)代表這是絕對路徑。如果開頭是兩個斜線(//)表示文件中所有符合模式的元素都會被選出來,即使是處於樹中不同的層級也會被選出來。
|
選取屬於 |
|
選取屬於 |
|
選取屬於 |
|
|
|
選取所有擁有名為 |
|
選取所有 |
|
選取 |
/bookstore/book[price>35.00]/title |
選取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值須大於 35.00。 |
通配符 |
描述 |
* |
匹配任何元素節點。 |
@* |
匹配任何屬性節點。 |
node() |
匹配任何類型的節點。 |
選取若干路徑
軸名稱 |
結果 |
ancestor |
選取當前節點的所有先輩(父、祖父等)。 |
ancestor-or-self |
選取當前節點的所有先輩(父、祖父等)以及當前節點本身。 |
attribute |
選取當前節點的所有屬性。 |
child |
選取當前節點的所有子元素。 |
descendant |
選取當前節點的所有后代元素(子、孫等)。 |
descendant-or-self |
選取當前節點的所有后代元素(子、孫等)以及當前節點本身。 |
following |
選取文檔中當前節點的結束標簽之后的所有節點。 |
namespace |
選取當前節點的所有命名空間節點。 |
parent |
選取當前節點的父節點。 |
preceding |
選取文檔中當前節點的開始標簽之前的所有節點。 |
preceding-sibling |
選取當前節點之前的所有同級節點。 |
self |
選取當前節點。 |
運算符 |
描述 |
實例 |
返回值 |
| |
計算兩個節點集 |
//book | //cd |
返回所有擁有 book 和 cd 元素的節點集 |
+ |
加法 |
6 + 4 |
10 |
- |
減法 |
6 - 4 |
2 |
* |
乘法 |
6 * 4 |
24 |
div |
除法 |
8 div 4 |
2 |
= |
等於 |
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 |
if(isset($_REQUEST["login"]) & isset($_REQUEST["password"])) { $login = $_REQUEST["login"]; $login = xmli($login); $password = $_REQUEST["password"]; $password = xmli($password); $xml = simplexml_load_file("passwords/heroes.xml"); $result = $xml->xpath("/heroes/hero[login='" . $login . "' and password='" . $password . "']"); if($result) { $message = "<p>Welcome <b>" . ucwords($result[0]->login) . "</b>, how are you today?</p><p>Your secret: <b>" . $result[0]->secret . "</b></p>"; } else { $message = "<font color=\"red\">Invalid credentials!</font>"; }
/heroes/hero[login='' and password='']
/heroes/hero[login='' or 1=1 or ''='' and password='']
XPath盲注
盲注主要利用XPath的一些字符串操作函數和運算符:
//hero[contains(genre, '')]/movie
')][id=1]/login|a[contains(aa,'