避開sql注入過濾的幾個方法

2022-05-06 15:57:11 字數 1331 閱讀 9058

有的時候,很容易受到sql注入攻擊的程式,可能會進行輸入過濾,用來防止攻擊者無限制的利用其中存在的設計缺陷。

我們通常有以下幾種技巧,去避開這些過濾。

1,避免使用被阻止的字元,即不使用這些字元仍然達到攻擊目的。

a,如果注入乙個數字資料字段,就不需要使用單引號。

b,輸入注釋符號被阻止使用,我們可以設計注入的資料,既不破壞周圍的查詢語法。

比如, '

這裡存在注入,過濾了注釋符合,我們可以輸入 ' or 'a'='a

目的其實很簡單,就是把後面的單引號給閉合掉。

c,在乙個mssql注入中注入批量查詢的時候,不必使用分號分隔符。

只要糾正所有批量查詢的語法,無論你是否使用分號,查詢的解析器依然能正確的去解釋它們的。

2,避免使用簡單確認

一些輸入確認機制使用乙個簡單的黑名單,組織或刪除任何出現在這個名單中的資料,比如防注入程式。

這一般要看這個機制是否做的足夠的好了,黑名單是否足夠能確保安全。如果只是簡單的黑名單,那也有機會突破的。

我們可以輸入:

select       注意大小寫

selselectect    還記得ewebeditor是怎麼過濾asp的麼?

%53%45%4c%45%43%54                        url編碼

%2553%2545%254c%2545%2543%2554    對上面的每個%後加了乙個25

3,使用sql注釋符

a,使用注釋來冒充注入的資料中的空格。

select/*alocne*/username,password/*alocne*/from/*alocne*/admin

/*alocne*/來冒充空格

b,使用注釋來避開某些注入的確認過濾。

sel/*alocne*/ect username,password fr/*alocne*/om admin

4,處理被阻止的字串

比如,程式阻止了admin,因為怕攻擊者注入admin表單中的資料。

我們可以這樣

a,oracle資料庫: 'adm'||'in'

b,mssql資料庫: 'adm'+'in'

c,mysql資料庫: concat ('adm','in')

d,oracle中如果單引號被阻止了,還可以用chr函式

sleect password from admin where username = char(97) || chr(100) || chr(109) || chr(105) || chr(110)

sql注入繞開過濾的常用方法

1.使用注釋,例如 select foo username,password foo from foo users 在mysql中甚至可以在關鍵字中間插入注釋,例如sel foo ect username,password fr foo om users select ename,sal from ...

防止SQL注入的幾個途徑

sql注入攻擊的總體思路 發現sql注入位置 判斷伺服器型別和後台資料庫型別 確定可執 況 對於有些攻擊者而言,一般會採取sql注入法。下面我也談一下自己關於sql注入法的感悟。注入法 從理論上說,認證網頁中會有型如 select from admin where username and pass...

SQL注入的測試方法

web應用程式的資料儲存與讀取通過資料庫完成,而這些讀寫的操作通過sql語句實現。實際專案中可能因為開發人員的疏忽或經驗問題,未對使用者可輸入的引數進行嚴格地校驗,導致使用者可能惡意地將sql命令帶入資料庫執行,實現注入的目的。1.搜尋型引數 判斷是否存在sql注入漏洞,需滿足以下四步 正常查詢資料...