強網杯 2019 隨便注

2022-06-23 04:03:17 字數 2302 閱讀 1908

首先嘗試單引號,發現注入點。

兩種常規注釋都無法注釋,最後%23成功。

order by 發現輸出兩列。

嘗試利用聯合查詢檢視輸出位置。發現若干過濾詞,聯合查詢行不通。

嘗試堆疊查詢,發現可以!

首先我看到的是那個ctftraining資料庫,所以我被騙了,我深入了這條線

經過深入,我看到了乙個flag_table表

?inject=1%27%20;show%20databases;use ctftraining;show tables;desc flag_table;用desc看看裡面的列型別。

裡面說沒有flag,而且根據題目的形式來看有以下情況:

?inject=1' or 1=1%23,sql語句輸出模式是,取當前表的兩個字段,因為我們不能用聯合查詢select其他的表,所以只能對當前表進行操作。

?inject=1';show tables;那就先看看當前的庫有哪些表。

1919810931114514這個表長得比較特殊,從它入手吧。

?inject=1';desc1919810931114514`;彷彿看到了希望,但是也只能看到乙個有可能的表裡面有乙個有可能的列是flag,並沒有手段去看flag列中具體是什麼。

做到這裡不會做了。檢視wp,學到了很多:

首先用desc看錶的列屬性時,可以看有幾個列屬性,有幾個列屬性說明,全真輸出時會輸出幾個字段。

其次觀察題目給的預設sql語句中,查詢出來的字段是兩個。那麼說明題目給的預設from table 的 table 他有兩個列屬性,desc words後發現果然有兩個列屬性。

很大可能當前預設table是words表。

學到了一種重新命名的方法,原sql查詢語句中的selct * from table 中的 table沒法改,可以想看的表名稱改為目前預設from table的table表名,這樣就可以偷天換日。

構造語句為:

1';rename table words to words1;rename table1919810931114514to words;alter table words change flag id varchar(100) character set utf8 collate utf8_general_ci not null;desc words;#

這時全真查詢?inject=1' or 1=1%23得到flag。

強網杯 2019 隨便注

1 or 1 1 回顯了所有使用者資訊 union select 1,2 得到回顯 return preg match select update delete drop insert where i inject 過濾了 select update delete drop insert where...

強網杯 2019 隨便注

知識點 原理參考堆疊注入詳解 開啟題目,如圖所示 嘗試 1 union select 1,2 發現select被禁 嘗試堆疊注入 查庫 查表 查1919810931114514表的列名 1 show columns from 1919810931114514 這裡表名使用反引號進行包含 應該就是從1...

強網杯 2019 隨便注

題目 開啟後如下,比較典型的一道sql注入題目 輸入1 發現會返回一些資料,所以可以嘗試一下堆疊注入。堆疊注入 試一下,查詢資料庫 1 show databases 發現可以將資料庫都顯示出來,說明可行 再試試查詢表,回顯兩個表 1 show tables 查詢所有表 然後繼續訪問表中的列 1 sh...