現(xiàn)在市面上最流行的攻擊手法是什么,自然是SQL Injection了,中文叫數(shù)據(jù)庫注入。
隨著B/S模式應(yīng)用開發(fā)的發(fā)展,使用這種模式編寫應(yīng)用程序的程序員也越來越多。但是由于程序員的水平及經(jīng)驗(yàn)也參差不齊,相當(dāng)大一部分程序員在編寫代碼的時(shí)候,沒有對(duì)用戶輸入數(shù)據(jù)的合法性進(jìn)行判斷,使應(yīng)用程序存在安全隱患。用戶可以提交一段數(shù)據(jù)庫查詢代碼,根據(jù)程序返回的結(jié)果,獲得某些他想得知的數(shù)據(jù),這就是所謂的SQL Injection,即SQL注入。
如何手工檢測(cè)網(wǎng)站有此漏洞呢?假設(shè)網(wǎng)站的URL是http://url/list.php?id=1,哪么提交簡(jiǎn)單的and 1=1--或是and 1=2來檢測(cè)。
http://url/list.php?id=1 and 1=1--
http://url/list.php?id=1 and 1=2--
and 在數(shù)據(jù)庫語法中,邏輯為“和”,1=1永遠(yuǎn)又是真的,所以
http://url/list.php?id=1 and 1=1--會(huì)網(wǎng)站頁面不變,如果網(wǎng)站有漏洞的話,哪么
http://url/list.php?id=1 and 1=2--頁面就會(huì)有變化。
市面上所有的注射工具,例如sqlmap,它的error-based、stacked queries、AND/OR time-based blind和UNION query的PAYLOAD等注射判斷基本也是依據(jù)此方法。
同時(shí)今天看到一個(gè)很有意思評(píng)論:
據(jù)說車牌掛這個(gè)代碼,可以刪除交警的視屏錄像數(shù)據(jù)庫。使用drop 語句確實(shí)可以刪除數(shù)據(jù)庫或表,但是現(xiàn)在的程序都是需要開啟預(yù)處理的,錯(cuò)誤及非法詞語程序是不讀取的。開啟預(yù)處理現(xiàn)在都是最基本的寫法,沒有經(jīng)過處理的代碼是不安全的。