SQL注入之報錯型注入(詳細演示)

SQL有很多方法,當一個方法想不通的時候就需要換一個方法,這裏主要介紹SQL的報錯型注入(大佬繞過)

使用場景

  1. 當進行對一個網站SQL注入的時候,發現頁面上沒有顯示位但是有sql語句執行錯誤信息輸出。
  2. 什麼是顯示位:在一個在一個網站的正常頁面,服務端執行SQL語句查詢數據庫中的數據,客戶端將數 據展示在頁面中,這個展示數據的位置就叫顯示位 。

構造payload

  1. 介紹函數
    a. ExtractValue()
    b. UpdateXml()

ExtractValue()函數:
ExtractValue(xml,xpath),它接受兩個字符串參數,第一個參數可以傳入目標xml文檔,第二個參數是用Xpath路徑法表示的查找路徑。這裏如果Xpath格式語法書寫錯誤的話,就會報錯。這裏就是利用這個特性來獲得我們想要知道的內容。
eg:select extractvalue('~','~');
在這裏插入圖片描述
報出來了後面的 ‘~’
eg:select extractvalue(' ',concat('<',(select database()),'>'))
在這裏插入圖片描述
報出來了database();

UpdateXml():
UpdateXML(xml_target, xpath_expr, new_xml)

xml_target:: 需要操作的xml片段
xpath_expr: 需要更新的xml路徑(Xpath格式)
new_xml: 更新後的內容

在SQL注入裏面這些參數不重要,只需要在更新的xml路徑的參數改成SQL語句。和上面的ExtractValue()函數一樣

可以這樣想:當執行updatexml()和extractvalue()函數的時候,需要路徑,但是路徑不正確就會報錯。當把路徑改成SQL注入語句,同樣,會報出錯誤(裏面內容卻是SQL注入執行的內容)

eg:select updatexml(1,concat('<',(select database()),'>'),1);
在這裏插入圖片描述
這樣就報出了database();

總結

  1. 根據以上的兩個函數可以進行報錯型注入。
  2. 根據自己的情況可以構造好多SQL注入。上面只是演示了獲得database()的
  3. SQL注入需要靈活掌握,所以就需要了解原理

以上都是自己的理解,如果有錯誤希望大家指出共同學習~
小白在進步~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章