午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

SQL注入最易懂系列教程(1.原理和分類)

 牽牛360 2018-07-09

前置技能

  1. 1.了解SQL語言、語法、操作、常用函數(shù)
  2. (基本的SQL數(shù)據(jù)庫操作是進(jìn)行SQL注入攻擊的基礎(chǔ))

  3. 2.了解PHP語言,以及PHP+SQL的常用組合操作

1.什么是SQL注入

所謂SQL注入,就是通過把SQL命令插入到 Web表單提交 或 URL 或 頁面請求等的查詢字符串中,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令。

注:從這句話看出常見的注入點(diǎn)在

a. web表單

b. URL鏈接中

c. 登錄框(頁面請求查詢)

2.SQL注入原理

SQL注入(SQLInjection)是這樣一種漏洞:當(dāng)我們的Web app 在向后臺數(shù)據(jù)庫傳遞SQL語句進(jìn)行數(shù)據(jù)庫操作時(shí)。如果對用戶輸入的參數(shù)沒有經(jīng)過嚴(yán)格的過濾處理,那么攻擊者就可以構(gòu)造特殊的SQL語句,直接輸入數(shù)據(jù)庫引擎執(zhí)行,獲取或修改數(shù)據(jù)庫中的數(shù)據(jù)。

SQL注入漏洞的本質(zhì)是把用戶輸入的數(shù)據(jù)當(dāng)做代碼來執(zhí)行,違背了“數(shù)據(jù)與代碼分離”的原則。

SQL注入漏洞有兩個(gè)關(guān)鍵條件,理解這兩個(gè)條件可以幫助我們理解并防御SQL注入漏洞:

  • 用戶能控制輸入的內(nèi)容
  • Web應(yīng)用執(zhí)行的代碼中,拼接了用戶輸入的內(nèi)容

我們以DVWA漏洞演示環(huán)境舉列子

我們在輸入框中輸入1,點(diǎn)擊submit,頁面返回如圖紅框中數(shù)據(jù)。

這里有經(jīng)驗(yàn)的滲透老司機(jī)就知道,是web應(yīng)用查詢了數(shù)據(jù)庫,獲取了useid為1的數(shù)據(jù)。

這里我們大膽猜測一下這里的SQL語句長什么樣子呢

select Firstname, sunname from XXX where userid= 我們輸入的ID

SQL注入最易懂系列教程(1.原理和分類)

當(dāng)我們在輸入框中輸入1時(shí)sql語句為:

select Firstname, sunname from XXX where userid= '1'

由回顯數(shù)據(jù)我們得到Id為1的firstname,sunname的字段內(nèi)容

但是當(dāng)我們在輸入框中輸入如下內(nèi)容時(shí)

1' union select 1,database()%23(‘%23’為’#’的url編碼,’#’為mysql注釋符,注釋掉后面的語句)

此時(shí)執(zhí)行的數(shù)據(jù)庫命令是:

select Firstname, sunname from XXX where userid= '1' union select 1,databsae()#

不僅可以得到id為1的firstname,sunname字段內(nèi)容,還可以得到當(dāng)前數(shù)據(jù)庫名

SQL注入最易懂系列教程(1.原理和分類)

這樣如果攻擊者構(gòu)造更多的SQL語句,哪么數(shù)據(jù)庫里的信息都會被攻擊者得到,造成數(shù)據(jù)泄露。

3.SQL注入的產(chǎn)生

  • 動態(tài)字符串構(gòu)建

  • 不正確的處理轉(zhuǎn)義字符(寬字節(jié)注入)
  • 不正確的處理類型(報(bào)錯(cuò)泄露信息)
  • 不正確的處理聯(lián)合查詢
  • 不正確的處理錯(cuò)誤(報(bào)錯(cuò)泄露信息)
  • 不正確的處理多次提交(二次注入)
  • 不安全的數(shù)據(jù)庫配置

  • 默認(rèn)預(yù)先安裝的用戶
  • 以root、SYSTEM 或者Administrator權(quán)限系統(tǒng)用戶來運(yùn)行
  • 默認(rèn)允許很多系統(tǒng)函數(shù)(如xp_cmdshell, OPENROWSET 等)

4.SQL注入的作用

  • 繞過登錄驗(yàn)證(萬能密碼等)
  • 獲取敏感數(shù)據(jù)(獲取數(shù)據(jù)庫中的信息)
  • 文件操作(讀取、寫入文件等)
  • 執(zhí)行系統(tǒng)命令
  • 等等

5.常見的SQL注入分類

A.按照數(shù)據(jù)庫執(zhí)行結(jié)果是否顯示到頁面上分類

a.SQL回顯注入(數(shù)據(jù)庫的執(zhí)行結(jié)果直接顯示到頁面上)

SQL回顯注入又可以分為:

01:union聯(lián)合查詢注入

02:報(bào)錯(cuò)注入

b.SQL盲住不顯示到頁面上)

SQL 盲住又可以分為:

01:布爾盲住

02:時(shí)間注入

B.按照注入點(diǎn)類型來分類

  • 數(shù)字型注入點(diǎn)
  • 在 Web 端大概是 http:///news.php?id=1 這種形式,其注入點(diǎn) id 類型為數(shù)字,所以叫數(shù)字型注入點(diǎn)。這一類的 SQL 語句原型大概為 select * from 表名 where id=1。
  • 字符型注入點(diǎn)
  • 在 Web 端大概是 http:///news.php?name=admin 這種形式,其注入點(diǎn) name 類型為字符類型,所以叫字符型注入點(diǎn)。這一類的 SQL 語句原型大概為 select * from 表名 where name='admin'。有時(shí)候是是雙引號:where name='admin',注意多了引號。
  • 搜索型注入點(diǎn)
  • 這是一類特殊的注入類型。這類注入主要是指在進(jìn)行數(shù)據(jù)搜索時(shí)沒過濾搜索參數(shù),一般在鏈接地址中有“keyword=關(guān)鍵字”,有的不顯示在的鏈接地址里面,而是直接通過搜索框表單提交。 此類注入點(diǎn)提交的 SQL 語句,其原形大致為:select * from 表名 where 字段 like '%關(guān)鍵字%'。

C.按照數(shù)據(jù)提交的方式來分類

這種分類其實(shí)只是 HTTP 傳遞數(shù)據(jù)的方式不同,嚴(yán)格來講和 SQL 沒多大關(guān)系,但是在編寫 PoC (漏洞驗(yàn)證程序)的時(shí)候,這會影響到我們的代碼中發(fā)送數(shù)據(jù)的形式,所以我在這里提出來了。

  • GET 注入
  • 提交數(shù)據(jù)的方式是 GET , 注入點(diǎn)的位置在 GET 參數(shù)部分。比如有這樣的一個(gè)鏈接 http:///news.php?id=1 , id 是注入點(diǎn)。
  • POST 注入
  • 使用 POST 方式提交數(shù)據(jù),注入點(diǎn)位置在 POST 數(shù)據(jù)部分,常發(fā)生在表單中。
  • Cookie 注入
  • HTTP 請求的時(shí)候會帶上客戶端的 Cookie, 注入點(diǎn)存在 Cookie 當(dāng)中的某個(gè)字段中。
  • HTTP 頭部注入
  • 注入點(diǎn)在 HTTP 請求頭部的某個(gè)字段中。比如存在 User-Agent 字段中。嚴(yán)格講的話,Cookie 其實(shí)應(yīng)該也是算頭部注入的一種形式。因?yàn)樵?HTTP 請求的時(shí)候,Cookie 是頭部的一個(gè)字段。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多