Web安全高危漏洞之SQL注入

Web安全高危漏洞之SQL注入

一、 什么是SQL注入

1.png

“有人的地方就有江湖浩螺,有數(shù)據(jù)庫存在的地方就可能存在 SQL 注入漏洞盯另。”

------某某大佬

在客戶端發(fā)出請(qǐng)求的過程中源哩,在請(qǐng)求數(shù)據(jù)包的參數(shù)中,破壞原有SQL結(jié)構(gòu)鸦做,插入惡意的SQL命令励烦,最終達(dá)到欺騙服務(wù)器或數(shù)據(jù)庫執(zhí)行惡意的SQL命令,導(dǎo)致數(shù)據(jù)庫信息泄露泼诱。

二坛掠、 漏洞分析及產(chǎn)生的原理

1、sql注入按照參數(shù)類型可分為兩種:數(shù)字型坷檩、字符型和搜索型却音。

1)數(shù)字型

當(dāng)注入點(diǎn)的參數(shù)為整數(shù)時(shí),比如 ID=1矢炼,num=4系瓢,page=45等,這種形式的注入句灌,通常稱為數(shù)字型注入漏洞夷陋。

select * from 表名 where id=1

select * from 表名 where id=1 and 1=1

2)字符型

當(dāng)注入點(diǎn)是字符串時(shí)欠拾,則稱為字符型注入,字符型注入需要引號(hào)骗绕、括號(hào)來閉合藐窄,例如

name=”用戶輸入字符”

sql = "select * from users where name=’admin’ ”;

sql = "select * from users where name=’admin’’and 1=1‘ ”;

3)搜索型

網(wǎng)站資源搜索出存在注入時(shí),則稱為搜索型注入酬土,注入點(diǎn)的SQL語句通常為like模糊查詢荆忍,通常利用“%”實(shí)現(xiàn)注入。

select * from 表名 where 字段 like '%關(guān)鍵字%'

select * from 表名 where 字段 like '%測(cè)試%' and '%1%'='%1%'

2撤缴、按照數(shù)據(jù)提交的方式來分類

(1)GET 注入

提交數(shù)據(jù)的方式是 GET , 注入點(diǎn)的位置在 GET 參數(shù)部分刹枉。比如有這樣的一個(gè)鏈接http://127.0.0.1/news.php?id=1 , id 是注入點(diǎn)。

(2)POST 注入

使用 POST 方式提交數(shù)據(jù)屈呕,注入點(diǎn)位置在 POST 數(shù)據(jù)部分中的一個(gè)參數(shù)中微宝,常發(fā)生在表單中。

(3)Cookie 注入

HTTP 請(qǐng)求的時(shí)候會(huì)帶上客戶端的 Cookie, Cookie 當(dāng)中的某個(gè)字段會(huì)存在注入點(diǎn)虎眨。

(4)HTTP 頭部注入

注入點(diǎn)在 HTTP 請(qǐng)求頭部的某個(gè)字段中蟋软。例如 User-Agent 字段。

3嗽桩、按照?qǐng)?zhí)行效果來分類

(1)基于布爾的盲注

當(dāng)頁面屏蔽sql查詢結(jié)果時(shí)遵堵,可以利用返回的正常頁面和空值的對(duì)比机杜,判斷條件真假進(jìn)行注入屠尊。例如:

"SELECT * FROM users WHERE id=1 and ascii(substr(database(),1,1))>114--+LIMIT 0,1"

詳細(xì)利用過程請(qǐng)參考以下地址:https://blog.csdn.net/weixin_40709439/article/details/81355856

(2)基于時(shí)間的盲注

當(dāng)不能根據(jù)頁面返回內(nèi)容判斷任何信息時(shí)虱咧,用條件語句查看時(shí)間延遲語句是否執(zhí)行(即頁面返回時(shí)間是否增加)來判斷。

例如:select * from users where id=1 and sleep(3);

(3)基于報(bào)錯(cuò)注入

當(dāng)頁面會(huì)返回錯(cuò)誤信息時(shí)种樱,通過插入報(bào)錯(cuò)型注入的惡意sql查詢,將結(jié)果直接返回報(bào)錯(cuò)的信息中俊卤。

例如:通過floor報(bào)錯(cuò),注入語句如下:

and select 1 from (select count(),concat(version(),floor(rand(0)2))x from information_schema.tables group by x)a);

(4)聯(lián)合查詢注入

可以使用sql查詢語句中的union的情況下的注入嫩挤。

(5)堆查詢注入

可以同時(shí)執(zhí)行多條語句的執(zhí)行時(shí)的注入。

(6)寬字節(jié)注入

三消恍、漏洞加固方法

1岂昭、預(yù)編譯SQL語句和綁定變量

例如使用PreparedStatement預(yù)編譯語句代替Statement語句,將全部符號(hào)進(jìn)行轉(zhuǎn)義狠怨。

2约啊、過濾字符

  1. SQL查詢的關(guān)鍵字

"and","exec","execute","insert","delete","update","count","drop","chr","mid","master","truncate","char","declare","sitename","net user","xp_cmdshell","like","create","table","from","grant","use","group_concat","column_name","information_schema.columns","table_schema","union","where","select","update","order","by","or",dbcc,alter,backup,if,else,add,set,open,close,begin,retun,as,go,exists,end

2) 特殊字符

"*", " ' ", ";" ,"&","-","--","+","http://","/","%","#","|",""","$","<",">","=","[","]","||","@"

3、其他注意事項(xiàng)

1)固定數(shù)據(jù)長度佣赖,能在一定程度上防止比較長的SQL注入語句語句執(zhí)行恰矩。

2)統(tǒng)一數(shù)據(jù)層編碼,建議使用UTF-8編碼憎蛤,上下層編碼不一致有可能導(dǎo)致一些過濾規(guī)則被繞過外傅。

3)避免網(wǎng)站顯示SQL錯(cuò)誤信息纪吮,比如類型錯(cuò)誤、字段不匹配等萎胰,防止攻擊者利用這些錯(cuò)誤信息進(jìn)行一些判斷碾盟。

4)嚴(yán)格限制網(wǎng)站數(shù)據(jù)庫運(yùn)行權(quán)限,建議以最小權(quán)限(例如:僅有讀取和運(yùn)行權(quán)限)用戶運(yùn)行數(shù)據(jù)庫技竟,從而最大限度的減少注入對(duì)數(shù)據(jù)庫的危害冰肴。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市榔组,隨后出現(xiàn)的幾起案子嚼沿,更是在濱河造成了極大的恐慌,老刑警劉巖瓷患,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件骡尽,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡擅编,警方通過查閱死者的電腦和手機(jī)攀细,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來爱态,“玉大人谭贪,你說我怎么就攤上這事〗醯#” “怎么了俭识?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長洞渔。 經(jīng)常有香客問我套媚,道長,這世上最難降的妖魔是什么磁椒? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任堤瘤,我火速辦了婚禮,結(jié)果婚禮上浆熔,老公的妹妹穿的比我還像新娘本辐。我一直安慰自己,他們只是感情好医增,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布慎皱。 她就那樣靜靜地躺著,像睡著了一般叶骨。 火紅的嫁衣襯著肌膚如雪茫多。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天邓萨,我揣著相機(jī)與錄音地梨,去河邊找鬼菊卷。 笑死,一個(gè)胖子當(dāng)著我的面吹牛宝剖,可吹牛的內(nèi)容都是我干的洁闰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼万细,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼扑眉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起赖钞,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤腰素,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后雪营,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體弓千,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年献起,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了洋访。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谴餐,死狀恐怖姻政,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情岂嗓,我是刑警寧澤汁展,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站厌殉,受9級(jí)特大地震影響食绿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜年枕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一炫欺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧熏兄,春花似錦、人聲如沸树姨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽帽揪。三九已至硝清,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間转晰,已是汗流浹背芦拿。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來泰國打工士飒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蔗崎。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓酵幕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親缓苛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子芳撒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

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