1. 程式人生 > >《web安全深度剖析》筆記(二)

《web安全深度剖析》筆記(二)

http狀態碼,3個數字。第一位定義響應類別

1xx 資訊提示表請求已被成功接收,繼續 100101

2xx 成功,伺服器成功處理請求 200206

3xx 重定向,告訴客戶端新資源地址,瀏覽器重新對新資源傳送請求 300305

4xx 客戶端錯誤狀態碼 401415

5xx 有效請求但web伺服器自身出錯,用於描述伺服器內部錯誤 500505

常見:

200 請求成功

302 重定向

404 請求資源不存在

400 請求有語法錯誤,伺服器不理解

401 請求未經授權

403 收到請求,但伺服器拒絕提供服務

500 伺服器內部錯誤

503 伺服器當前不能處理請求,一段時間後可恢復

http訊息又稱http頭(

header),由4部分組成:請求頭、響應頭、普通頭、實體頭

請求頭:

Range可以請求實體的部分內容,多執行緒下載一定會使用此請求頭

X-forware-for 代表請求端的IP

Http80埠,https443.

https需要到CA申請認證證書

js屬於前端驗證,在瀏覽器未提交資料時進行驗證,若在攔截http請求後修改資料即可繞過js驗證

前端js驗證是為了防止使用者輸入錯誤,伺服器端驗證是為了防止惡意攻擊

3

GOOGLE常用語法說明

site:指定域名

intext:正文中存在關鍵字的網頁

intitle:標題中存在關鍵字的網頁

info :一些基本資訊

inurl

URL存在關鍵字的網頁

filetype:搜尋指定位檔案型別

如:

intitle管理漏洞 filetype:php

intext:Powered byDiscuz

計算機指紋時別不僅針對網站cms的指紋識別,還有針對伺服器作業系統的和對web容器的指紋識別

5

SQL注入漏洞的形成原因:用於輸入的資料被SQL直譯器執行

注入漏洞分類:

數字型注入 出現在ASPPHP等弱型別語言中

(弱型別語言自動推導變數型別)

字元型注入

與數字型區別:數字型不需要單引號閉合,而字串型別一般要使用單引號閉合

關鍵點在於如何閉合SQL語句以及註釋多條程式碼

注:資料庫不同,字串連線條件也不同,如

SQLServer為“+”ORACLE為”||“mysql為空格

常見的注入叫法:

POST 注入:注入欄位在POST資料中

Cookie注入:注入欄位在Cookie資料中

延時注入:使用資料庫延時特性注入

搜尋注入:注入處為搜尋的地點

base64注入:注入字串需經base64加密

對資料庫的利用方式:查詢資料、讀寫檔案、執行命令

儲存程序(storedprocedure)是在大型資料庫中為了完成特定功能的一組SQL”函式“,如執行系統命令、檢視登錄檔、讀取磁碟目錄等

攻擊者最常用xp-cmdshell

使用exec執行十六進位制SQL語句並不存在單引號,可以用來突破防注入程式

msyql函式利用

1.load_file()函式讀檔案操作

SQL注入中,將會經常使用函式組合來達到某種目的,如在瀏覽器返回資料時,有可能存在亂碼問題,則可以使用hex()將字串轉換為16進位制資料

2.intooutfile寫檔案操作

連線字串使用concat()\caoncat_us()

mysql顯錯式注入,可以像SQLServer一樣通過一些異常將字串訊息提取出來

mysql沒有顯錯特性,並不能應用到mysql中,mysql可以使用某些函式來提取錯誤訊息

如:updatexml,extractvalure,floor等函式庫

6.寬位元組注入

寬位元組注入是由編碼不統一造成的,一般出現在php+mysql

php配置檔案php.ini中存在magic_quotes_gpc選項,被稱為魔術引號,當此選項被開啟時,使用GETPOSTCookie接收我的',”,\(單引號,雙引號,反斜線)和NULL字元會被自動加上反斜線轉義,使得字元無法構成字元注入型

7.mysql長字元截斷

mysql設定有一個sql_mode,當為default時,mysql對插入超長的值只會warning,不會errors,這可能會導致一些截斷問題

8.延時注入

盲注判斷,盲注的意思即頁面無差異的注入

延時屬於盲注的一種,是一種基於時間差異的注入技術

mysql有一個函式Sleep(duration),意為在duration引數給定的秒數後執行語句

通過頁面返回的時間可以斷定是否存在SQL注入SQL漏洞