swpuCTF2019 web1 無列名注入


上周參加的swpuctf比賽第一道web題做了好久,在最后一個小時用非預期的方法做出來了,看了官方題解之后記錄一下wp里面的無列名注入。

關於無列名注入可以看一下這篇鏈接

 https://www.chabug.org/ctf/852.html 

swpuctf的web1題目在buuoj上面已經復現了,可以去上面做一下,buuoj是目前市面上非常好的ctf練習平台。

登錄了之后在發布廣告處存在sql注入漏洞,我們輸入的內容在輸入后沒有漏洞,當我們發布廣告后查看廣告詳情的時候就造成了二次注入,從而產生了注入。

經過測試,

題目環境過濾了空格,我們使用/**/來進行繞過

過濾了or,因此我們無法使用order by 以及information_schema這個庫

因為過濾了注釋符,所以查詢語句的最后我們要閉合單引號

我們先使用group by判斷有多少字段以及回顯位置

可以知道字段數為22

同時回顯位置是2,3

在無法使用information_schema這個庫,所以我們谷歌一下繞過的方法

 https://www.anquanke.com/post/id/193512 

所以我們使用 sys.schema_auto_increment_columns 庫來進行查詢

首先查詢一下表名

payload為:
title=-1'union/**/select/**/1,
(select/**/group_concat(table_name)/**/from/**/sys.schema_auto_increment_colum
ns/**/where/**/table_schema=schema()),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
,19,20,21,'22&content=1&ac=add

這里buuoj的平台好像沒有 sys.schema_auto_increment_columns 這個庫,但是在比賽的時候是可以查詢到有ads,和users這兩個表的,ads盲猜是廣告相關的,而且題目的提示里面有使用somd5解密,所以可知我們應該是要獲得admin或者flag用戶的密碼。

接着我們無列名注入users這個表里面的數據

-1'union/**/select/**/1,
(select/**/group_concat(a)/**/from(select/**/1,2/**/as/**/a,3/**/as/**/b/**/union/**/sele
ct*from/**/users)x),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22

這里對於無列名注入時我們是采用的子查詢的方式,子查詢是將一個查詢語句嵌套在另一個查詢語句中,在特定的情況下,一個查詢語句的條件需要另一個查詢語句來獲取,內層查詢語句的查詢結果,可以為外層查詢語句提供查詢條件。

這里我們將users這個表里面的查詢的結果提供給外部查詢,同時把列名轉換成a,b,這樣我們后面就直接查詢a,b列就可以獲得結果

我們先查a列,得到的結果如下

可以猜測這里返回的是用戶名

於是我們再group_concat(b),查詢b列

獲得的結果如下,

得到flag

個人感覺子查詢主要在於內部查詢的時候將列名轉換了,然后外部查詢內部查詢改變的列名,即可實現繞過。


免責聲明!

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



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