ASP獲取參數(shù)主要有下面兩種:http://www.111cn.net/asp/5/58615.htmRequest.QueryString (GET) 或 Request.Form (POST)我們有時(shí)為了簡(jiǎn)化代碼,會(huì)寫成 ID=Request("ID"),正是因?yàn)檫@樣寫法出現(xiàn)了問題……
原來WEB服務(wù)是這樣讀取數(shù)據(jù)的:先取GET中的數(shù)據(jù),沒有再取POST中的數(shù)據(jù),還會(huì)去取Cookies中的數(shù)據(jù)!這個(gè)我也才發(fā)現(xiàn)。通常的防注入系統(tǒng),他會(huì)檢測(cè)GET和POST中的數(shù)據(jù),如果有特殊字符就禁止數(shù)據(jù)的提交,而上面簡(jiǎn)略寫法,就不會(huì)被check
到。
舉例說明,參數(shù)提交及獲取原理:
/1.asp?id=123
如果只輸:/1.asp 就不能看到正常的數(shù)據(jù),因?yàn)闆]有參數(shù)!想知道有沒有Cookies問題(也就是有沒有Request("XXX")格式問題)
先用IE輸入:/1.asp加載網(wǎng)頁(yè),顯示不正常(沒有輸參數(shù)的原因),之后在IE輸入框再輸入javascript:alert(document.cookie="id="+escape("123"));說明:document.cookie="id="+escape("123") 就是把 123 保存到Cookies 的 ID 中。alert(xxx) 就是彈對(duì)話框。
按回車后,會(huì)看到彈出一個(gè)對(duì)話框 內(nèi)容是: id=123,之后,刷新網(wǎng)頁(yè),如果正常顯示,表示是用Request("ID") 這樣的
格式收集數(shù)據(jù),就可以試Cookies注入了。
在地址欄中輸入: Javascript:alert(document.cookie="id="+escape("123 and 3=3"));刷新頁(yè)面,如果顯示正常,可以再試下一步(如果不正常,就有可能也有過濾了 www.111cn.net)
javascript:alert(document.cookie="id="+escape("123 and 3=4"));刷新一下頁(yè)面如果不正常顯示,這就表示可以注入
了。
如果代碼是用Request.QueryString或Request.Form收集數(shù)據(jù)的話,是沒有Cookies注入問題的,因?yàn)榉?wù)程序是直截從
GET或POST中讀取數(shù)據(jù)的,Cookies是否有數(shù)據(jù)代碼不會(huì)去獲取的。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注