1. 程式人生 > >Sql注入型別小結

Sql注入型別小結

Sql注入型別

1.前言

Sql注入形成的原因:使用者輸入的非法資料被直譯器執行

2.注入型別

2.1注入點的不同

1)數字型別的注入

當輸入引數為數字型別時,例如頁碼,ID等,存在注入時則為數字型別的注入。

測試方法如下:

說明存在注入可能。

這類注入方式常見於PHPASP等弱型別語言中,弱型別語言會自動推導資料型別,例,輸入的ID的值為1時,會自動推匯出ID的資料型別為int型,當輸入的ID的值為1 and 1 = 2時,會自動推匯出ID的資料型別為string型,但JAVA或者C#這類強型別語言並沒有這樣的特性,int型強制轉換成string型時,會丟擲異常,注入失敗,所以這類注入方式常見於弱型別語言中。

2)字串型別的注入

當輸入引數為字串型別時,則為字串型別的輸入,其與數字型別的注入的區別在於:注入時需要使用單引號來閉合。

測試方法如下:

其不同主要原因在於sql語句的差異,例,select *from user where name = ‘admin’ 則注入時需要單引號閉合,注入的資料應為admin’and 1 = 1 --,合併為sql則為select * from user where name = ‘admin’and 1 = 1 – ‘

2.2提交方式的不同

1GET注入

2POST注入

3COOKIE注入

要想深入瞭解Cookie注入的成因,必須要了解ASP指令碼中的request

物件。它被用來獲取客戶端提交的資料,其一般的使用方法是:request.[集合名稱](引數名稱),但ASP中也可以省略集合名稱,直接使用request(“引數名稱”),當使用這樣的方法時,ASP規定是按QueryStringFormCookiesServerVariables的順序來獲取資料的,當我們使用request("引數名稱")方式獲取客戶端提交的資料,並且沒有對使用request.cookies("引數名稱")方式提交的資料進行過濾時,Cookie注入就產生了。

測試方法如下:

1.先判斷注入點是否存在,例去掉id後是否能正常訪問,若無法正常訪問則id引數在資料傳輸中起作用

2.清空瀏覽器,在瀏覽器位址列輸入

”javascript:alert(document.cookie="id="+escape("xx"));”,回車後彈出對話方塊,使用原來的URL重新整理頁面,頁面正常,說明是以request(“id”)獲取資料。

3.測試用例:URL: “javascript:alert(document.cookie="id="+escape("and1 = 1"));”

         URL: “javascript:alert(document.cookie="id="+escape("and1 = 2"));”

判斷是否有注入點方法與其餘sql注入一致。

4HTTP注入

例:

X-Forwarded-ForHTTP頭的一個欄位。它被認為是客戶端通過HTTP代理或者負載均衡器連線到web服務端獲取源ip地址的一個標準。

Useragent是記錄軟體程式的客戶端資訊的HTTP頭欄位,他可以用來統計目標和違規協議。在HTTP頭中應該包含它,這個欄位的第一個空格前面是軟體的產品名稱,後面有一個可選的斜槓和版本號。

Referer是另外一個當應用程式沒有過濾儲存到資料庫時,容易發生SQL注入的HTTP頭。它是一個允許客戶端指定的可選頭部欄位,通過它我們可以獲取到提交請求URI的伺服器情況。它允許伺服器產生一系列的回退連結文件,像感興趣的內容,日誌等。它也允許跟蹤那些壞連結以便維護。

2.3獲取資訊的方式不同

1)基於布林的盲注,即可以根據返回頁面判斷條件真假的注入。

2)基於時間的盲注,即不能根據頁面返回內容判斷任何資訊,用條件語句檢視時間延遲語句是否執行(即頁面返回時間是否增加)來判斷。

3)基於報錯注入,即頁面會返回錯誤資訊,或者把注入的語句的結果直接返回在頁面中。


相關推薦

Sql注入型別小結

Sql注入型別1.前言Sql注入形成的原因:使用者輸入的非法資料被直譯器執行2.注入型別2.1注入點的不同(1)數字型別的注入當輸入引數為數字型別時,例如頁碼,ID等,存在注入時則為數字型別的注入。測試方法如下:說明存在注入可能。這類注入方式常見於PHP和ASP等弱型別語言中

sql注入學習小結

sql注入小結 尾部處理小結 # /* ;%00 基礎資訊獲取小結 sql版本資訊 AND MID(VERSION(),1,1) = ‘5’ 還有一種看到的網上的大牛獲取資訊的方法 1 /!50094ea

java防sql注入方法小結

本文對java操作資料庫的一項重點內容——防sql注入進行說明。對現有方法進行了簡單優劣討論與總結,供大家參考討論。 重點:不要將使用者輸入內容,在未經檢查的情況下,直接拼接為sql語句進行資料庫訪問操作。 防sql注入方法如下: 過濾輸入 對輸入內容

SQL注入筆記02:基於不同引數型別注入

數字型 $id=$_GET['x'] Select * from news where id=$id 如:?x=1->Select * from news where id=1 注入更改:無 字

sql注入小結

  才學了sql注入沒多久,就忘得乾乾淨淨了,也是佩服我自己。想學太多東西了,欲速則不達啊。還是老老實實記錄些東西吧,學的時候得認真不然再回頭看的時候真的是啥都不會。 常用語句 先來總結下做sqli-labs常用得語句吧。(以三個欄位為例) 查基本資訊:id=xx' u

SQL注入語法型別

一、Unionunion操作符 用於合併兩個或多個select 語句的結果集 注意:union內部的select語句必須擁有相同數量的列。列也必須擁有相似的資料型別。同時,每條select語句中的列的順序必須相同。預設情況,Union操作符選取不同的值。如果允許重複的值,請使用union all 注意:1

【轉載】SQL注入型別 講解及利用 (一)

為了方便個人學習,轉載自 簡介:SQL注入漏洞產生的原因SQL Injection程式設計師在編寫程式碼的時候,沒有對使用者輸入資料的合法性進行判斷,使應用程式存在安全隱患 使用者可以提交一段資料庫查詢程式碼,根據程式返回的結果,獲得某些他想得知的資料或進行資料庫操作S

防止SQL注入攻擊的一些方法小結

開頭語:SQL注入攻擊的危害性很大。在講解其防止辦法之前,資料庫管理員有必要先了解一下其攻擊的原理。這有利於管理員採取有針對性的防治措施 -----解決方案-------------------------------------------------------- 過濾

JAVA中用 SQL語句操作小結

update 數據類型 where條件 ring 行數 實用 英文 delet date 1、添加記錄(INSERT) 使用SQL語句的INSERT命令可以向數據庫中插入記錄,INSERT命令的基本形式為: INSERT INTO 表名 [(字段名1,字段名2…)] VAL

Mybatis框架之動態SQL書寫方式小結

用戶輸入 ... pre efi date emp 表達式 內容 字符 動態SQL簡介 動態SQL是Mybatis框架中強大特性之一。在一些組合查詢頁面,需要根據用戶輸入的查詢條件生成不同的查詢SQL,這在JDBC或其他相似框架中需要在代碼中拼寫SQL,經常容易出錯,在My

php對前臺提交的表單資料做安全處理(防SQL注入和XSS攻擊等)

/** * 防sql注入字串轉義 * @param $content 要轉義內容 * @return array|string */ public static function escapeString($content) { $pa

(學習)SQL注入--寬位元組注入

SQL注入–寬位元組注入 實踐: http://chinalover.sinaapp.com/SQL-GBK/index.php?id=-1 頁面顯示: 顯然執行的查詢語句是: select id,title from news where id = '1' 其

SQL注入報錯注入函式彙總

1.floor() id = 1 and (select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a) 原理:https://b

第九屆極客大挑戰——小帥的廣告(二階sql注入

引言:因為太想加入三葉草了,所以極客大挑戰這段時間一直在努力的學習,原來還真沒想到能在比賽中拿到排行榜第一的成績,不過現在看來努力始終都是有回報的。但我依然還是比較菜啊-.-,最近卻有很多夥伴加我好友,一來就叫我大佬,讓我深感有愧-.-,既然都想看我wp,那我就挑幾道題寫寫好了,口拙詞劣還望見諒。

SQL注入命令

sqlmap -u “http://url/news?id=1″ –current-user #獲取當前使用者名稱稱 sqlmap -u “http://www.xxoo.com/news?id=1″ –current-db #獲取當前數 據庫名稱 sqlmap -u “http://www

什麼叫做SQL注入,如何防止?

 所謂SQL注入式攻擊,就是攻擊者把SQL命令插入到Web表單的輸入域或頁面請求的查詢字串,欺騙伺服器執行惡意的SQL命令。在某些表單中,使用者輸入的內容直接用來構造(或者影響)動態SQL命令,或作為儲存過程的輸入引數,這類表單特別容易受到SQL注入式攻擊。常見的SQL注入式攻擊過

滲透測試:SQL注入攻擊(ASP)

分類: 滲透測試 SQL注入攻擊是黑客對資料庫進行攻擊的常用手段之一。隨著B/S模式應用開發的發展,使用這種模式編寫應用程式的程式設計師也越來越多。但是由於程式設計師的水平及經驗也參差不齊,相當大一部分程式設計師在編寫程式碼的時候,沒有對使用者輸入資料的合法性進行判斷,使應用程式存在安全隱患。

php用於防SQL注入的幾個函式

用於防SQL注入的幾個函式 不要相信使用者的在登陸中輸入的內容,需要對使用者的輸入進行處理 SQL注入: ' or 1=1 #   防止SQL注入的幾個函式:   addslashes($string):用反斜線引用字串中的特殊字元' " \ $u

nodejs中查詢mysql防止SQL注入

Performing queries The most basic way to perform a query is to call the .query() method on an object (like a Connection, Pool, or PoolNamespace inst

SQL注入中常用的mysql語法

user()返回當前資料庫連線使用的使用者; database()返回當前資料庫連線使用的資料庫; version()返回當前資料庫的版本; concat-ws() 函式可以將這些函式進行組合使用並顯示出來。concat函式中,將其中的引數直接連線起來產生新的字串。而在con