Sqli-Labs:Less 32 - Less 33

Less 32

JSP

可能是閑著沒事多做了一關(guān)秉沼,名字就是Fun with JSP蛮浑,可能確實是用來娛樂的迎献。
單引號小括號字符型达舒,無過濾值朋。
唯一的樂趣是有一個index.jsp1的備份文件,可以看到源碼巩搏,這也是 Web 題的一種套路昨登,一般用在 PHP 代碼審計和 SQL 注入的混合關(guān)。

PHP

基于錯誤_GET_單引號_字符型_轉(zhuǎn)義引號反斜杠_寬字節(jié)注入

0x01. 寬字節(jié)注入

在舊版本的 MySQL 安裝時贯底,會有編碼問題導(dǎo)致中文亂碼丰辣,需要手動設(shè)置編碼為 UTF-8。而安裝 MySQL 5.7 時并沒有出現(xiàn)這個問題禽捆,默認編碼已經(jīng)是 UTF-8笙什。

SHOW VARIABLES LIKE 'character%';

PHP 自帶一些轉(zhuǎn)義特殊字符的函數(shù),如addslashes()睦擂,mysql_real_escape_string()得湘,mysql_escape_string()等,這些函數(shù)可用來防止 SQL 注入顿仇。

id=1'or'1'='1淘正,單引號本用來閉合語句摆马,這些函數(shù)會自動轉(zhuǎn)義這些閉合的單引號,在這些單引號前面加上轉(zhuǎn)義符\鸿吆,變?yōu)?code>1\'or\'1\'=\'1囤采,如此在 SQL 查詢中仍然一個普通的字符串,不能進行注入惩淳。

而網(wǎng)站在過濾'的時候蕉毯,通常的思路就是將'轉(zhuǎn)換為\',因此我們在此想辦法將'前面添加的\去掉,一般有兩種思路:

  1. %bb連帶\
    如果程序的默認字符集是GBK等寬字節(jié)字符集思犁,就有可能產(chǎn)生寬字節(jié)注入代虾,繞過上述過濾。
    若在 PHP 中使用mysql_query("set names gbk")將默認字符集設(shè)為GBK激蹲,而使用addslashes()轉(zhuǎn)義用戶輸入棉磨,這時如果用戶輸入%bb%27,則addslashes()會在%27前面加上一個%5c字符学辱,即轉(zhuǎn)義字符\乘瓤。
    而 MySQL 在使用GBK編碼時,會認為兩個字符為一個漢字策泣,%bb%5c是一個寬字符(前一個 ASCII 碼大于 128 才能到漢字的范圍)衙傀,也就是,也就是說%bb%5c%27=籠'萨咕,這樣單引號就未被轉(zhuǎn)義能閉合語句统抬,從而產(chǎn)生 SQL 注入。%bb并不是唯一一個可以產(chǎn)生寬字節(jié)注入的字符任洞,理論上%81-%FE均可蓄喇。

  2. 過濾\'中的\
    構(gòu)造%bb%5c%5c%27发侵,addslashes()會在兩個%5c%27前都加上\%5c交掏,變?yōu)?code>%bb %5c%5c %5c%5c %5c%27,但寬字符集認為%bb%5c是一個字符即刃鳄,則變?yōu)?code>%bb%5c %5c%5c %5c%5c %27即籠\\\\'盅弛,四個\正好轉(zhuǎn)義為兩個\,即'未被轉(zhuǎn)義叔锐。這也是 bypass 的一種方法挪鹏。

一個字符集轉(zhuǎn)碼網(wǎng)站

0x02. 注入過程

知道這關(guān)是寬字節(jié)注入,先以上帝視角看看源碼:

mysql_query("SET NAMES gbk");
$id = check_addslashes($_GET['id']);
function check_addslashes($string)
{
    $string = preg_replace('/'.preg_quote('\\').'/',"\\\\\\",$string);      //escape any backslash
    $string = preg_replace('/\'/i','\\\'',$string);                         //escape single quote with a backslash
    $string = preg_replace('/\"/',"\\\"",$string);                          //escape double quote with a backslash
    return $string;
}

可以看到這個函數(shù)是個過濾\愉烙、'讨盒、"的函數(shù),分別在前面加上\步责。

步驟1:確定寬字節(jié)注入

1返顺、1'禀苦、1"都能正常回顯遂鹊,可以猜測輸入的引號被過濾振乏,從頁面給的 hint 也證實了這一點。

猜測是引號是被轉(zhuǎn)義而并非被純粹過濾秉扑,嘗試寬字節(jié)注入:

http://localhost:8088/sqlilabs/Less-32/?id=1%bb%27

有錯誤回顯慧邮,從其中可以看到被單引號閉合。
若無錯誤回顯舟陆,可注釋后面的查詢語句:

http://localhost:8088/sqlilabs/Less-32/?id=1%bb%27--+

用上述第二種方法同樣可以做到:

http://localhost:8088/sqlilabs/Less-32/?id=1%bb%5c%5c%27--+

已經(jīng)確定了單引號閉合且寬字節(jié)注入可以繞過误澳,剩下的就是正常的注入,無其他過濾條件秦躯。
因未過濾注釋脓匿,所以只有開頭的單引號需要寬字節(jié)注入。

0x03. 吐槽

總覺得越到后面越簡單了宦赠,可能是沒把過濾條件都結(jié)合起來陪毡,后來還得總結(jié)一下過濾條件和注入方式。

Less 33

基于錯誤_GET_單引號_字符型_addslashes()_寬字節(jié)注入

Less 32 是自定義的過濾器勾扭,本關(guān)直接使用了 PHP 的addslashes()函數(shù)毡琉,在 Less 17 中介紹過:

addslashes()與stripslashes()函數(shù)

addslashes(string)函數(shù)返回在預(yù)定義字符之前添加反斜杠\的字符串:

  • 單引號 '
  • 雙引號 "
  • 反斜杠 \
  • 空字符 NULL

該函數(shù)可用于為存儲在數(shù)據(jù)庫中的字符串以及數(shù)據(jù)庫查詢語句準備字符串。

注意:默認地妙色,PHP對所有的GET桅滋、POST和COOKIE數(shù)據(jù)自動運行addslashes()。所以不應(yīng)對已轉(zhuǎn)義過的字符串使用addslashes()身辨,因為這樣會導(dǎo)致雙層轉(zhuǎn)義丐谋。遇到這種情況時可以使用函數(shù)get_magic_quotes_gpc()進行檢測。

stripslashes(string)函數(shù)刪除由addslashes()函數(shù)添加的反斜杠煌珊。

判斷和注入過程同 Less 32 完全相同号俐。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市定庵,隨后出現(xiàn)的幾起案子吏饿,更是在濱河造成了極大的恐慌,老刑警劉巖蔬浙,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件猪落,死亡現(xiàn)場離奇詭異,居然都是意外死亡畴博,警方通過查閱死者的電腦和手機笨忌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來俱病,“玉大人官疲,你說我怎么就攤上這事杂曲。” “怎么了袁余?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵擎勘,是天一觀的道長。 經(jīng)常有香客問我颖榜,道長棚饵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任掩完,我火速辦了婚禮噪漾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘且蓬。我一直安慰自己欣硼,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布恶阴。 她就那樣靜靜地躺著诈胜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪冯事。 梳的紋絲不亂的頭發(fā)上焦匈,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天,我揣著相機與錄音昵仅,去河邊找鬼缓熟。 笑死,一個胖子當(dāng)著我的面吹牛摔笤,可吹牛的內(nèi)容都是我干的够滑。 我是一名探鬼主播,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼吕世,長吁一口氣:“原來是場噩夢啊……” “哼彰触!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起寞冯,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤渴析,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后吮龄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡咆疗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年漓帚,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片午磁。...
    茶點故事閱讀 40,918評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡尝抖,死狀恐怖毡们,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情昧辽,我是刑警寧澤衙熔,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站搅荞,受9級特大地震影響红氯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜咕痛,卻給世界環(huán)境...
    茶點故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一痢甘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧茉贡,春花似錦塞栅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至愉粤,卻和暖如春庄敛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背科汗。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工藻烤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人头滔。 一個月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓怖亭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親坤检。 傳聞我的和親對象是個殘疾皇子兴猩,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,926評論 2 361