SQL注入防御繞過(guò)——二次編碼

01 背景知識(shí)

一枚抵、為什么要進(jìn)行URL編碼

通常如果一樣?xùn)|西需要編碼线欲,說(shuō)明這樣?xùn)|西并不適合傳輸。對(duì)于URL來(lái)說(shuō)汽摹,編碼主要是為了避免引發(fā)歧義與混亂李丰。
例如,URL參數(shù)字符串中使用key=value鍵值對(duì)這樣的形式來(lái)傳參逼泣,鍵值對(duì)之間以&符號(hào)分隔趴泌,如/?name=abc&pwd=123如果你的value字符串中包含了=或者&舟舒,那么勢(shì)必會(huì)造成接收Url的服務(wù)器解析錯(cuò)誤,因此必須將引起歧義的&和= 符號(hào)進(jìn)行轉(zhuǎn)義嗜憔,也就是對(duì)其進(jìn)行編碼秃励。
對(duì)于URL編碼的深入研究可以參看下面這些內(nèi)容:
為什么要進(jìn)行URL編碼
深入分析 web 請(qǐng)求響應(yīng)中的編碼問(wèn)題

二、URL傳輸過(guò)程中的編碼問(wèn)題

HTTP請(qǐng)求過(guò)程經(jīng)歷的幾個(gè)環(huán)節(jié):
瀏覽器【get/post】①========>服務(wù)器②========>瀏覽器顯示③

  • ①:瀏覽器會(huì)把URL經(jīng)過(guò)編碼后發(fā)送給服務(wù)器吉捶,不同的瀏覽器對(duì)URL的編碼規(guī)則不同夺鲜。對(duì)于GET方式提交的數(shù)據(jù),瀏覽器會(huì)自動(dòng)進(jìn)行URL編碼帚稠;對(duì)于POST方式提交的數(shù)據(jù)谣旁,其編碼方式可以由開(kāi)發(fā)者進(jìn)行指定。
  • ②:服務(wù)器根據(jù)其自身的配置文件對(duì)URL進(jìn)行解碼(解碼成Unicode)滋早,然后將顯示內(nèi)容編碼榄审。
  • ③:瀏覽器按照指定的編碼顯示該網(wǎng)頁(yè)。
    此外杆麸,在客戶端也就是瀏覽器上運(yùn)行的前端程序也會(huì)根據(jù)Web服務(wù)的需要對(duì)要傳輸?shù)臄?shù)據(jù)進(jìn)行一些編碼操作搁进,而在服務(wù)端除了服務(wù)器中間件會(huì)自動(dòng)對(duì)URL進(jìn)行解碼,后端的Web程序會(huì)對(duì)前端進(jìn)行編碼的數(shù)據(jù)進(jìn)行解碼操作昔头。

02 二次編碼注入

下面這幅圖片很好地解釋了二次編碼注入的原理(圖片來(lái)源為網(wǎng)易Web安全工程師課程饼问,侵刪):

二次編碼注入

從中我們也可以得知,二次編碼注入產(chǎn)生的原因是:
后端程序的編碼函數(shù)揭斧,如urldecode()等莱革,與PHP本身處理編碼時(shí),兩者配合失誤讹开,使得攻擊者可以構(gòu)造數(shù)據(jù)消滅\

看一下實(shí)例代碼:

//用GET方式獲取id值盅视,并對(duì)其中的特殊字符進(jìn)行轉(zhuǎn)義
$id = mysql_real_escap_string($_GET['id']);
//使用urldecode()函數(shù)進(jìn)行解碼
$id = urldecode($id);

$sql = "SELECT * FROM usres WHERE id = '$id' LIMIT 0,1;
$result = mysql_query($sql);
$row = mysql_fetch_array($result);

上面的代碼就是一個(gè)二次注入的典型場(chǎng)景,這時(shí)如果我們提交:
http://127.0.0.1/sql.php?id=1%2527
就可以繞過(guò)對(duì)'的轉(zhuǎn)義旦万,進(jìn)行SQL注入攻擊闹击。

在測(cè)試時(shí),如果發(fā)現(xiàn)了頁(yè)面可能存在二次編碼注入漏洞成艘,也可以使用sqlmap進(jìn)行自動(dòng)化攻擊

//只需在注入點(diǎn)后鍵入%2527即可
python sqlmap.py -u "http://127.0.0.1/sql.php?id=1%2527"

分享一個(gè)二次編碼注入的漏洞實(shí)例

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末赏半,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子淆两,更是在濱河造成了極大的恐慌断箫,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件琼腔,死亡現(xiàn)場(chǎng)離奇詭異瑰枫,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門光坝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)尸诽,“玉大人,你說(shuō)我怎么就攤上這事盯另⌒院” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵鸳惯,是天一觀的道長(zhǎng)商蕴。 經(jīng)常有香客問(wèn)我,道長(zhǎng)芝发,這世上最難降的妖魔是什么绪商? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮辅鲸,結(jié)果婚禮上格郁,老公的妹妹穿的比我還像新娘。我一直安慰自己独悴,他們只是感情好例书,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著刻炒,像睡著了一般决采。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上坟奥,一...
    開(kāi)封第一講書(shū)人閱讀 51,190評(píng)論 1 299
  • 那天树瞭,我揣著相機(jī)與錄音,去河邊找鬼爱谁。 笑死移迫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的管行。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼邪媳,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼捐顷!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起雨效,我...
    開(kāi)封第一講書(shū)人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤迅涮,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后徽龟,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體叮姑,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了传透。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耘沼。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖朱盐,靈堂內(nèi)的尸體忽然破棺而出群嗤,到底是詐尸還是另有隱情,我是刑警寧澤兵琳,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布狂秘,位于F島的核電站,受9級(jí)特大地震影響躯肌,放射性物質(zhì)發(fā)生泄漏者春。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一清女、第九天 我趴在偏房一處隱蔽的房頂上張望钱烟。 院中可真熱鬧,春花似錦校仑、人聲如沸忠售。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)稻扬。三九已至,卻和暖如春羊瘩,著一層夾襖步出監(jiān)牢的瞬間泰佳,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工尘吗, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留逝她,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓睬捶,卻偏偏與公主長(zhǎng)得像黔宛,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子擒贸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理臀晃,服務(wù)發(fā)現(xiàn),斷路器介劫,智...
    卡卡羅2017閱讀 134,652評(píng)論 18 139
  • 1徽惋、通過(guò)CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明先生_X自主閱讀 15,979評(píng)論 3 119
  • 蠶叢開(kāi)國(guó)西絕秦,一魚(yú)分水二李耕座韵;高祖都漢何所憑险绘,沃野千里水出岷;桃園一拜情何深,隆中一語(yǔ)天下分宦棺;漢閣秦樓朱色褪瓣距,排...
    愿得一人懂我詩(shī)閱讀 156評(píng)論 1 3
  • 偷偷告訴你們一個(gè)秘密,其實(shí)你身邊的所有人都是雙面人渺氧,只是你自己不知道而已旨涝,他們可以隨意的展示給你任何想給你看見(jiàn)的一...
    默然墨語(yǔ)閱讀 460評(píng)論 0 0
  • 一、按點(diǎn)對(duì)比 二侣背、編程實(shí)現(xiàn)對(duì)比 Storm初次是由Clojure實(shí)現(xiàn)白华,后有Java和Python。而 Spark ...
    Graceleeman閱讀 717評(píng)論 0 1