滲透攻防Web篇-SQL注入攻擊高級

來源:http://bbs.ichunqiu.com/thread-10093-1-1.html?from=ch

作者:zusheng

時間:2016年8月8日 11:03:56

社區(qū):i春秋

前言

前面我們學(xué)習(xí)了如何尋找,確認(rèn)又官,利用SQL注入漏洞的技術(shù)欠橘,本篇文章我將介紹一些更高級的技術(shù)陵珍,避開過濾蔼紧,繞開防御怠惶。有攻必有防回季,當(dāng)然還要來探討一下SQL注入防御技巧瘩燥。

目錄

第五節(jié) 避開過濾方法總結(jié)

5.1魏颓、大小寫變種

5.2浴韭、URL編碼

5.3、SQL注釋

5.4、空字節(jié)

5.5氏豌、二階SQL注入

第六節(jié) 探討SQL注入防御技巧

6.1湖蜕、輸入驗證

6.2混蔼、編碼輸出

正文

第五節(jié) 避開過濾方法總結(jié)

Web應(yīng)用為了防御包括SQL注入在內(nèi)的攻擊杈绸,常常使用輸入過濾器,這些過濾器可以在應(yīng)用的代碼中企软,也可以通過外部實現(xiàn)庐扫,比如Web應(yīng)用防火墻和入侵防御系統(tǒng)。避開過濾的方法是靈活的,本節(jié)我總結(jié)了一些常用的技巧形庭。在我們不知道過濾規(guī)則的時候可以嘗試一下杰妓。

5.1、大小寫變種

這種技巧適用于關(guān)鍵字阻塞過濾器不聰明的時候碘勉,我們可以變換關(guān)鍵字字符串中字符的大小寫來避開過濾,因為使用不區(qū)分大小寫的方式處理SQL關(guān)鍵字桩卵。

例如:(下面的代碼就是一個簡單的關(guān)鍵字阻塞過濾器)

[PHP]純文本查看復(fù)制代碼

?

1

2

3

4

5

6

7functionwaf($id1){

if(strstr($id1,'union')){

echo'error:lllegal input';

return;

}

return$id1;

}

這段代碼的缺陷就在strstr()函數(shù)是對大小寫敏感的验靡,所以我們可以通過大小寫變種來繞過。

5.2雏节、URL編碼

URL編碼用途廣泛胜嗓,可以通過它繞過多種類型的輸入過濾器。

[PHP]純文本查看復(fù)制代碼

?

1

2

3

4

5

6

7functionwaf($id1){

if(strstr($id1,' ') ||strstr($id1,'/**/')){

echo'error:lllegal input';

return;

}

return$id1;

}

雙URL編碼有時候會起作用钩乍,如果Web應(yīng)用多次解碼辞州,在最后一次解碼之前應(yīng)用其輸入過濾器。

因為雙URL編碼寥粹,第一次解碼%2f%2a進入輸入過濾器变过,所以成功繞過了。當(dāng)然這個使用前提是后面有一個URL解碼涝涤。

5.3媚狰、SQL注釋

很多開發(fā)人員認(rèn)為,將輸入限制為單個就可以限制SQL注入攻擊阔拳,所以他們往往就只是阻止各種空白符崭孤。

[PHP]純文本查看復(fù)制代碼

?

1

2

3

4

5

6

7functionwaf($id1){

if(strstr($id1,' ')){

echo'error:lllegal input';

return;

}

return$id1;

}

但是內(nèi)聯(lián)注釋不使用空格就可以構(gòu)造任意復(fù)雜的SQL語句。

5.4糊肠、空字節(jié)

通常的輸入過濾器都是在應(yīng)用程序之外的代碼實現(xiàn)的辨宠。比如入侵檢測系統(tǒng)(IDS),這些系統(tǒng)一般是由原生編程語言開發(fā)而成货裹,比如C++嗤形,為什么空字節(jié)能起作用呢,就是因為在原生變成語言中泪酱,根據(jù)字符串起始位置到第一個出現(xiàn)空字節(jié)的位置來確定字符串長度派殷。所以說空字節(jié)就有效的終止了字符串。

只需要在過濾器阻止的字符串前面提供一個采用URL編碼的空字節(jié)即可墓阀,例如:

[SQL]純文本查看復(fù)制代碼

?

1

%00' union select username,password from users where username='admin'--

5.5毡惜、二階SQL注入

實際上到目前為止,你在網(wǎng)上大部分搜索SQL注入文章 基本都可以歸類到"一階(first-order)"SQL注入中斯撮,因為這些例子涉及的事件均發(fā)生在單個HTTP請求和響應(yīng)中经伙,如下所示:

(1) 攻擊者在HTTP請求中提交某種經(jīng)過構(gòu)思的輸入。

(2) 應(yīng)用處理輸入,導(dǎo)致攻擊者注入的SQL查詢被執(zhí)行帕膜。

(3) 如果可行的話枣氧,會在應(yīng)用對請求的響應(yīng)中向攻擊者返回查詢結(jié)果。

另一種不同的SQL注入攻擊是"二階(second-order)"SQL注入垮刹,這種攻擊的事件時序通常如下所示:

(1) 攻擊者在HTTP請求中提交某種經(jīng)過構(gòu)思的輸入达吞。

(2) 應(yīng)用存儲該輸入(通常保存在數(shù)據(jù)庫中)以便后面使用并響應(yīng)請求。

(3) 攻擊者提交第二個(不同的)請求荒典。

(4) 為處理第二個請求酪劫,應(yīng)用會檢索已經(jīng)存儲的輸入并處理它,從而導(dǎo)致攻擊者注入的SQL查詢被執(zhí)行寺董。

(5) 如果可行的話覆糟,會在應(yīng)用對第二個請求的響應(yīng)中向攻擊者返回查詢結(jié)果。

從字面上來看二階SQL注入對于新手很難理解遮咖,所以我來介紹一個經(jīng)典的例子幫助大家理解滩字。

這是一個個人信息應(yīng)用程序,我們可以更新我們的用戶名御吞,也可以查看我們的個人信息麦箍。

第二步查看我們個人信息時的SQL語句:

[SQL]純文本查看復(fù)制代碼

?

1

select*fromuserswhereusername ='$name'

查詢的語句所用到的變量name就是從數(shù)據(jù)庫提取到的我們的用戶名,所以我們可以先利用更新我們的用戶名功能插入語句進數(shù)據(jù)庫陶珠。

這樣查看我們個人信息的時候就成功執(zhí)行了我們的SQL注入攻擊内列。

例如:我們在用戶名插入

[SQL]純文本查看復(fù)制代碼

?

1

zusheng' or? '1'='1

那么后面我們就執(zhí)行了語句

[SQL]純文本查看復(fù)制代碼

?

1

select*fromuserswhereusername ='zusheng'or'1'='1'

第六節(jié) 探討SQL注入防御技巧

6.1、輸入驗證

輸入驗證是指要驗證所有應(yīng)用程序接收到的輸入是否合法背率。

有兩中不同類型的輸入驗證方法:白名單和黑名單驗證

白名單驗證:比如id值话瞧,那么我們判斷它是否為數(shù)字。

黑名單驗證:使用正則表達式禁止使用某些字符和字符串

應(yīng)該盡量使用白名單寝姿,對于無法使用白名單的交排,使用黑名單提供局部限制。

6.2饵筑、編碼輸出

我們除了要驗證應(yīng)用程序收到的輸入以外埃篓,還要對數(shù)據(jù)進行編碼,這樣不僅可以防御SQL注入攻擊根资,還能防止出現(xiàn)其他問題架专,比如XSS。

結(jié)束語

因為本人技術(shù)有限玄帕,所以對防御技巧了解并不是深入部脚,希望有更好防御技巧的小伙伴可以分享一下心得,我會將收到的技巧加入本文裤纹,提供給更多的小伙伴進行參考委刘,謝謝了。

系列文章預(yù)告及導(dǎo)航

滲透攻防Web篇-SQL注入攻擊初級(狀態(tài):已更新)

第一節(jié) 注入攻擊原理及自己編寫注入點

第二節(jié) 尋找及確認(rèn)SQL注入

滲透攻防Web篇-SQL注入攻擊中級(狀態(tài):已更新)

第三節(jié) 利用SQL注入

第四節(jié) SQL盲注利用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市锡移,隨后出現(xiàn)的幾起案子呕童,更是在濱河造成了極大的恐慌,老刑警劉巖淆珊,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夺饲,死亡現(xiàn)場離奇詭異,居然都是意外死亡施符,警方通過查閱死者的電腦和手機钞支,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來操刀,“玉大人,你說我怎么就攤上這事婴洼」强樱” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵柬采,是天一觀的道長欢唾。 經(jīng)常有香客問我,道長粉捻,這世上最難降的妖魔是什么礁遣? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮肩刃,結(jié)果婚禮上祟霍,老公的妹妹穿的比我還像新娘。我一直安慰自己盈包,他們只是感情好沸呐,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著呢燥,像睡著了一般崭添。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上叛氨,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天呼渣,我揣著相機與錄音,去河邊找鬼寞埠。 笑死屁置,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的仁连。 我是一名探鬼主播缰犁,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了帅容?” 一聲冷哼從身側(cè)響起颇象,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎并徘,沒想到半個月后遣钳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡麦乞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年蕴茴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姐直。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡倦淀,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出声畏,到底是詐尸還是另有隱情撞叽,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布插龄,位于F島的核電站愿棋,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏均牢。R本人自食惡果不足惜糠雨,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望徘跪。 院中可真熱鬧甘邀,春花似錦、人聲如沸垮庐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽突硝。三九已至测摔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間解恰,已是汗流浹背锋八。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留护盈,地道東北人挟纱。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像腐宋,于是被迫代替她去往敵國和親紊服。 傳聞我的和親對象是個殘疾皇子檀轨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

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

  • 隨著當(dāng)今世界網(wǎng)絡(luò)技術(shù)與信息技術(shù)高速發(fā)展,Web應(yīng)用程序具有界面統(tǒng)一欺嗤,使用簡單参萄,易于維護,擴展性好煎饼,共享度高等優(yōu)先讹挎。...
    高美麗閱讀 3,964評論 0 4
  • 原文出處: i春秋學(xué)院 前言前面我們學(xué)習(xí)了如何尋找,確認(rèn)吆玖,利用SQL注入漏洞的技術(shù)筒溃,本篇文章我將介紹一些更高級...
    Aieru閱讀 454評論 0 2
  • [SQL注入攻擊] SQL注入攻擊是黑客對數(shù)據(jù)庫進行攻擊的常用手段之一。隨著B/S模式應(yīng)用開發(fā)的發(fā)展沾乘,使用這種模式...
    James黃杰閱讀 2,658評論 0 30
  • 來源怜奖;http://bbs.ichunqiu.com/thread-9518-1-1.html?from=ch 作...
    池寒閱讀 1,170評論 0 7
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)翅阵,斷路器歪玲,智...
    卡卡羅2017閱讀 134,656評論 18 139