1樓:匿名使用者
如果以前沒玩過注入,
請把ie選單-工具-internet選項-高階-顯示友好http錯誤資訊前面的勾去掉。
為了把問題說明清楚,以下以asp?id=xx(" target=_blank>http://www.
id=xx(這個地址是假想的)
為例進行分析,xx可能是整型,也有可能是字串。
1、整型引數的判斷
當輸入的引數xx為整型時,通常news.asp中sql語句原貌大致如下:
select * from 表名 where 欄位=xx,所以可以用以下步驟測試sql注入是否存在。
最簡單的判斷方法
附加一個單引號),
此時news.asp中的sql語句變成了
select * from 表名 where 欄位=xx』,
如果程式沒有過濾好「』」的話
就會提示 news.asp執行異常;
但這樣的方法雖然很簡單,但並不是最好的
因為first,不一定每臺伺服器的iis都返回具體錯誤提示給客戶端,
如果程式中加了cint(引數)之類語句的話,sql注入是不會成功的,
但伺服器同樣會報錯,具體提示資訊為處理 url 時伺服器上出錯。
請和系統管理員聯絡。
second,目前大多數程式設計師已經將「』「 過濾掉,所以用」 』」測試不到注入點
所以一般使用經典的1=1和1=2測試方法
見下文:
執行正常,
而且與執行結果相同;
asp執行異常;(這就是經典的 1=1 ;1=2 判斷方法)
如果以上面滿足,news.asp中就會存在sql注入漏洞,反之則可能不能注入。
2、字串型引數的判斷
方法與數值型引數判斷方法基本相同
當輸入的引數xx為字串時,通常news.asp中sql語句原貌大致如下:
select * from 表名 where 欄位='xx',所以可以用以下步驟測試sql注入是否存在。
附加一個單引號),此時news.asp中的sql語句變成了
select * from 表名 where 欄位=xx』,news.asp執行異常;
and '1'='1', news.asp執行正常,
而且與執行結果相同;
and '1'='2', news.asp執行異常;
如果以上滿足,則news.asp存在sql注入漏洞,反之則不能注入
3、特殊情況的處理
有時asp程式設計師會在程式設計師過濾掉單引號等字元,以防止sql注入。此時可以用以下幾種方法試一試。
①大小定混合法:由於vbs並不區分大小寫,而程式設計師在過濾時通常要麼全部過濾大寫字串,要麼全部過濾小寫字串,而大小寫混合往往會被忽視。如用select代替select,select等;
②unicode法:在iis中,以unicode字符集實現國際化,我們完全可以ie中輸入的字串化成unicode字串進行輸入。如+ =%2b,空格=%20 等
;urlencode資訊參見附件一;
③ascii碼法:可以把輸入的部分或全部字元全部
<4>出了上述方法以外,還有個更簡單的方法就是使用現成的工具
像nb聯盟的nbsi就是一款很不錯的工具,目前最新的版本為2.2
2樓:山西新華電腦學校
sql注入:利用現有應用程式,將(惡意)的sql命令注入到後臺資料庫引擎執行的能力,這是sql注入的標準釋義。
簡述什麼是SQL隱碼攻擊,寫出簡單的SQL隱碼攻擊語句
一般開發,肯定是在前臺有兩個輸入框,一個使用者名稱,一個密碼,會在後臺裡,讀取前臺傳入的這兩個引數,拼成一段sql,例如 select count 1 from tab where usesr userinput and pass passinput,把這段sql連線資料後,看這個使用者名稱 密碼是...
sql判斷是否存在,SQL 語句判斷記錄是否存在
declare a int 定義變數select a count from a where id 2 查詢表a是否存在id 2 的資料,並賦值給變數 a 以下為判斷 if a 0 begin print 不存在 insert into aaa id values 2 插入資料 endelse pri...
判斷sql最後一條記錄,判斷sql最後一條記錄
sqlserver資料庫中判斷 declare maxnum int initnum intselect maxnum count from tbookinfo set initnum 1 while initnum maxnumbegin set initnum initnum 1 if init...