方案一
轉載于 攻防世界WP https://adworld.xctf.org.cn/task/writeup?type=web&id=5417&number=3&grade=1&page=1
題目連結https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=1&id=5417&page=1
- 侵權請聯系删除
先添加一個單引号,報錯,錯誤資訊如下:
接着測試–+注釋,發現被過濾,然後使用#注釋,可行 用order by語句判斷出有兩個字段,接着使用union select 爆字段,發現這個時候出現了如下提示:
發現上面的關鍵字都被過濾不能使用了,沒法進行注入,這個時候嘗試一下堆疊注入
現在回到這道題,利用堆疊注入,查詢所有資料庫:

查詢所有表:
查詢words表中所有列:
查詢1919810931114514表中所有列
根據兩個表的情況結合實際查詢出結果的情況判斷出words是預設查詢的表,因為查詢出的結果是一個數字加一個字元串,words表結構是id和data,傳入的inject參數也就是指派給了id
這道題沒有禁用rename和alert,是以我們可以采用修改表結構的方法來得到flag 将words表名改為words1,再将數字名表改為words,這樣數字名表就是預設查詢的表了,但是它少了一個id列,可以将flag字段改為id,或者添加id字段
這段代碼的意思是将words表名改為words1,1919810931114514表名改為words,将現在的words表中的flag列名改為id 然後用1’ or 1=1 #得到flag
過濾select|update|delete|drop|insert|where的注入 [ 強網杯 2019]随便注 方案2
mysql查詢語句-handler
https://blog.csdn.net/JesseYoung/article/details/40785137?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1