SQL注入知識(shí)點(diǎn)總結(jié)(面試版)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?SQL注入面試時(shí)該知道的知識(shí)點(diǎn)

總體見解:

1.只要是支持批處理SQL指令的數(shù)據(jù)庫服務(wù)器,都有可能受到此種手法的攻擊。

2.注入的本質(zhì),是把用戶輸入數(shù)據(jù)作為代碼執(zhí)行。有兩個(gè)關(guān)鍵條件:第一個(gè)是用戶能控制輸入;第二是原本程序要執(zhí)行的代碼,拼接了用戶輸入的數(shù)據(jù),把數(shù)據(jù)當(dāng)代碼執(zhí)行了。(出自吳瀚清《白帽子講WEB安全》)

3.錯(cuò)誤的回顯是敏感信息,是攻擊者了解某網(wǎng)站web服務(wù)器的重要手段。

4.最常見的盲注驗(yàn)證方法是,構(gòu)造簡單的條件語句,根據(jù)返回頁面是否發(fā)生變化,判斷SQL語句是否得到執(zhí)行。

例如http://a.b.c/item.php?id=2中,執(zhí)行的SQL為:select title,body FROM item where ID =2可以 將域名改為http://a.b.c/item.php?id=2or 1=1,

通過注入數(shù)據(jù),再對(duì)返回頁面進(jìn)行差異結(jié)果比較。兩次結(jié)果不一樣,證明存在注入漏洞。

SQL注入原理:

SQL注入攻擊指的是通過構(gòu)建特殊的輸入作為參數(shù)傳入Web應(yīng)用程序,而這些輸入大都是SQL語法里的一些組合,通過執(zhí)行SQL語句進(jìn)而執(zhí)行攻擊者所要的操作,其主要原因是程序沒有細(xì)致地過濾用戶輸入的數(shù)據(jù),致使非法數(shù)據(jù)侵入系統(tǒng)。(從客戶端提交特殊的代碼,從而收集程序及服務(wù)器的信息,從而獲取你想到得到的資料)

SQL注入漏洞常見類型:

1.沒有正確過濾轉(zhuǎn)義字符

2.Incorrecttypehandling

3.數(shù)據(jù)庫服務(wù)器中的漏洞

4.盲目SQL注入式攻擊

5.條件響應(yīng)

6.條件性差錯(cuò)

7.時(shí)間延誤

SQL注入點(diǎn)的類型:

1,數(shù)字型注入點(diǎn)

2,字符型注入點(diǎn)

3,搜索型注入點(diǎn):

這類注入主要是指在進(jìn)行數(shù)據(jù)搜索時(shí)沒過濾搜索參數(shù),一般在鏈接地址中有“keyword=關(guān)鍵字”,有的不顯示的鏈接地址,而是直接通過搜索框表單提交。

SQL注入原因:①不當(dāng)?shù)念愋吞幚恚虎诓话踩?a target="_blank" rel="nofollow">數(shù)據(jù)庫配置;③不合理的查詢集處理;④不當(dāng)?shù)腻e(cuò)誤處理;⑤轉(zhuǎn)義字符處理不合適;⑥多個(gè)提交處理不當(dāng)。

SQL注入一般步驟:

發(fā)現(xiàn)SQL注入位置;

·判斷環(huán)境,尋找注入點(diǎn),判斷數(shù)據(jù)庫類型;

其次,根據(jù)注入?yún)?shù)類型,在腦海中重構(gòu)SQL語句的原貌,按參數(shù)類型主要分為下面三種:

(A) ID=49這類注入的參數(shù)是數(shù)字型,SQL語句原貌大致如下:

Select * from表名where字段=49

注入的參數(shù)為ID=49 And [查詢條件],即是生成語句:

Select * from表名where字段=49 And [查詢條件]

(B) Class=連續(xù)劇這類注入的參數(shù)是字符型,SQL語句原貌大致概如下:

Select * from表名where字段=’連續(xù)劇’

注入的參數(shù)為Class=連續(xù)劇’ and [查詢條件]

and ‘’=’,即是生成語句:

Select * from表名where字段=’連續(xù)劇’ and [查詢條件] and‘’=’’

(C)搜索時(shí)沒過濾參數(shù)的,如keyword=關(guān)鍵字,SQL語句原貌大致如下:

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

注入的參數(shù)為keyword=’ and [查詢條件] and ‘%25’=’,即是生成語句:

Select * from表名where字段like ’%’ and [查詢條件]

and‘%’=’%’

·發(fā)現(xiàn)WEB虛擬目錄,將查詢條件替換成SQL語句,猜解表名,猜列名,猜目標(biāo)目錄的字段長度。

數(shù)據(jù)庫攻擊常用技巧:

猜表名:a.b.c/nes.php? id=5 and substring(@@version,1,1)=4

確認(rèn)表名:id=5 union all select 1,2,3 from admin

列名:id =5 union all select 1,2 passwd from addmin

·上傳ASP木馬,留下后門;

·得到管理員權(quán)限,竊取數(shù)據(jù);

ASP木馬只有USER權(quán)限,要想獲取對(duì)系統(tǒng)的完全控制,還要有系統(tǒng)的管理員權(quán)限。怎么辦?提升權(quán)限的方法有很多種:

上傳木馬,修改開機(jī)自動(dòng)運(yùn)行的.ini文件(它一重啟,便死定了);

復(fù)制CMD.exe到scripts,人為制造UNICODE漏洞;

下載SAM文件,破解并獲取OS的所有用戶名密碼;

等等,視系統(tǒng)的具體情況而定,可以采取不同的方法。

如何防御SQL漏洞?

(還是吳大牛)核心原則:數(shù)據(jù)代碼分離原則。

1.最佳方法:預(yù)編譯語句,綁定變量。使用預(yù)編譯的SQL語句,SQL的語意不會(huì)變化,攻擊者無法改變SQL的結(jié)構(gòu),即使攻擊者插入了類似于’or ‘1’=’1的字符串,也只會(huì)將此字符串作為username查詢。

2.從存儲(chǔ)過程來防御:先將SQL語句定義在數(shù)據(jù)庫中,存儲(chǔ)過程中可能也存在注入問題,應(yīng)該盡量避免在存儲(chǔ)過程中使用動(dòng)態(tài)SQL語句。

3.從數(shù)據(jù)類型角度來防御:限制數(shù)據(jù)類型,并統(tǒng)一數(shù)據(jù)格式。

4.從開發(fā)者角度來防御:開發(fā)時(shí)盡量用安全函數(shù)代替不安全函數(shù),編寫安全代碼。危險(xiǎn)函數(shù),常見的執(zhí)行命令函數(shù),動(dòng)態(tài)訪問函數(shù),如C語言中的system(),PHP的eval(),JSP的include()導(dǎo)致的代碼越權(quán)執(zhí)行,都是注入。

5.從數(shù)據(jù)庫管理者角度來防御:的最小權(quán)限原則,避免root,dbowner等高權(quán)限用戶直接連接數(shù)據(jù)庫。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 姓名:于川皓 學(xué)號(hào):16140210089 轉(zhuǎn)載自:https://baike.baidu.com/item/sq...
    道無涯_cc76閱讀 2,045評(píng)論 0 2
  • 測(cè)試: http://blog.csdn.net/chenmengyi828/article/details/52...
    Miley_MOJIE閱讀 1,188評(píng)論 0 1
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,706評(píng)論 18 399
  • 注入攻擊的分類 1.沒有正確過濾轉(zhuǎn)義字符 在用戶的輸入沒有為轉(zhuǎn)義字符過濾時(shí),就會(huì)發(fā)生這種形式的注入式攻擊,它會(huì)被傳...
    查無此人asdasd閱讀 1,837評(píng)論 0 5
  • 2017年7月 27日 天氣晴 星期四 我做的家務(wù)是掃地、拖地,我很開心。?
    琦琦花仙子小月閱讀 197評(píng)論 0 1

友情鏈接更多精彩內(nèi)容