記一次sql二次注入

2021-10-04 07:42:16 字數 1459 閱讀 3859

簡單的說,二次注入是指已儲存(資料庫、檔案)的使用者輸入被讀取後再次進入到 sql 查詢語句中導致的注入。

相比於直接注入,二次注入是比較有趣的。因為他會把你第一次的請求儲存,然後在第二次使用到的時候,才會啟用並且返回結果。例如在某個插入功能中,我們插入構造的sql語句,此時並沒有什麼現象,但是當瀏覽的時候,系統執行了乙個查詢,就執行了我們之前的sql語句,返回了我們需要的資訊。

2.嘗試注入

顯示失敗,說明單引號被嵌入sql語句被執行

測試了一下還真是這樣

嘗試閉合

結果失敗了,檢視後端發現insert語句中還加了乙個時間函式

於是構造新的閉合語句

爆庫

爆出其中乙個表名intd,這裡值得注意的:①是由於使用了concat函式連線#號與乙個表名的字串,所以查詢出表名的語句必須加limit限制一下查詢一條;

②與get與post方式sql注入不同的是,由於sql語句嵌入在查詢語句中,不用使用union select函式了,直接查資料就可以了

修改limit 0,1為limit 1,1 ....查出別的表key

接下來就是常規查列名,得出key 和id 兩列,通過查詢id不同數值(id=0~n),查key

最後一步特別關鍵

2',concat(0x23,(select `key` from ` key` where id =12)), '4')#

這裡key用的是反引號!

原因:加反引號是因為有時候定義的表名或者欄位名時與系統關鍵字發生衝突,所以才用反引號引起來,如果能確保不使用關鍵字就可以不用反引號。而我們實驗中的key,正好時mysql自身的乙個關鍵字。所以需要用反引號括起來

SQL二次注入

一 是什麼?何為二次注入?為了預防sql注入攻擊,而將輸入到應用程式中的某些資料進行了 轉義 escape 但是這些資料卻又在 未被轉義 unescaped 的查詢窗體中重複使用。簡單地說,二次注入和普通注入一樣是乙個程式漏洞,它發生在使用者提交的值被儲存在資料庫中,然後這個值被應用程式中的某些其他...

記一次grafana二次開發

最近因為有個 需求,需要改一下grafana的規則,原有的乙個conditions不滿足需求,所以對此部分的原始碼進行了修改。在github上面download下來grafana原始碼,然後就是一系列的改動,本文記錄一下grafana的環境搭建。安裝golang,安裝nodejs,這個網上都是教程 ...

記一次DVWA的SQL注入測試

sql注入擷取函式 mid column name,start length 第乙個引數為要處理的字串,start為開始位置,length為擷取的長度。substr string,start,length 第乙個引數為要處理的字串,start為開始位置,length為擷取的長度。left strin...