巧妙破解開別人ASP木馬密碼的方法

來源:互聯網
上載者:User
木馬|破解

破解目標:破解一asp木馬的經過加密的登破解asp木馬密碼陸密碼。由於木馬里沒有版本說明,具體也不知道這木馬叫什麼名。

破解思路:兩種,用加密後的密碼替換密文和利用密文及密碼編譯演算法反解出密碼。前者根本算不上真正的破解。

破解目的:沒事破著玩。

如果得不到asp原始碼,那麼可以說對破解密碼,我毫無勝算。有位華夏的朋友說他得到了一個web的許可權,但是無法修改首頁,發現其中已經有個asp木馬,但密碼是經過加密的。那麼就有了這篇動畫了。好了,廢話太多了,那麼,作好準備,這次的解說將會相當的漫長。

asp木馬登陸密碼驗證關鍵代碼如下:


ifEpass(trim(request.form("password")))="q_ux624q|p"then
response.cookies("password")="8811748"
...
<%
endselect
functionEpass(pass)
temppass=StrReverse(left(pass&"zxcvbnm,./",10))
templen=len(pass)
mmpassword=""
forj=1to10
mmpassword=mmpassword+chr(asc(mid(temppass,j,1))-templen+int(j*1.1))
next
Epass=replace(mmpassword,"'","B")
endfunction
%>

很明顯,用的是Epass函數把輸入的密碼進行加密,然後將得到的密文和原密文進行比對。如果稍有點編程基礎的話,特別是VB,那麼Epass裡的密碼編譯演算法將一目瞭然。如果沒有,那麼,沒關係,相信經過我的講解,你很快就會明白。函數中,儲存密碼的變數是pass。pass&"zxcvbnm,./"將pass裡的內容與zxcvbnm,./相串連得到一個新的字串。left(pass&"zxcvbnm,./",10)取前10位。StrReverse函數將得到的10位字串次序顛倒。len(pass)獲得密碼的長度。下面是一個迴圈。將得到的字串中的每一位的Ascii碼-密碼長度+取整(字元所在位*1.1),然後將得到的數值轉換成字元重新串連。最後將得到的字串中有'字元的全部替換成B,這樣密文的產生了。如果我們提取密碼編譯演算法用自己的密文替換原有密文,那麼相映的密碼也會變成你的密碼。但我說過了,這並不是真正意義上的破解。

假如我們輸入的是love,加密過程如下:


love
lovezxcvbnm,./'串連
lovezxcvbn    '取前10位
nbvcxzevol    '次序顛倒
n
110(ascii)-4(位元)+int(1(位置)*1.1)=107
107的ascii碼為k,依次類推,最後密文:
k`ucy|hzts

我們可以通過密文和密碼編譯演算法反推出密碼。從演算法的最後一步開始往上推。最後一步用B替換所有',有沒必要將B替換回'呢,答案是否定的。只要我們能得到最後的密文,密碼不一樣也是有可能的。如果有10個B,那原密碼的個數就2的10次方個,雖然原密碼只有一個,但是1024個密碼都是正確的。如果要完美破解的朋友,可以自己試著編寫全部的組合。

那麼這步可以忽略了。

上面的演算法很清晰,

chr(asc(mid(temppass,j,1))-templen+int(j*1.1))

我們只要簡單的將+和-換一下就可以了。

chr(asc(mid(temppass,j,1))+templen-int(j*1.1))

但是還有一個問題,我們事先不知道密碼的長度,沒關係,幸好密碼在1-10位之間,不太長。

那麼我們可以用一個1到10的迴圈求出所有可能的密碼,再將其用StrReverse函數次序顛倒。

那麼最後得到的密碼我們該怎麼確定哪個就是呢。可以根據pass&"zxcvbnm,./",看除密碼最後是否有zxvbnm,./的前幾位。

那麼這就是真正的密碼。那麼如果密碼是10位,將是永遠正確的,因為後面不存在串連。所以我們可能得到兩個答案。

以下便是我編寫的解密函數:


functionCcode(code)
fortemplen1=1to10
mmcode=""
forj=1to10
mmcode=mmcode+chr(asc(mid(code,j,1))+templen1-int(j*1.1))
next
Ccode=strReverse(mmcode)
response.write"密碼"&templen1&":"&Ccode&"<br>"
ifmid(Ccode,templen1+1,10-templen1)=left("zxcvbnm,./",10-templen1)andtemplen1<>10then
result=left(Ccode,templen1)
next
response.write"最後密碼:"&result
endfunction

好了,演算法可能在這麼短的時間內無法完全掌握,這是正常的,那麼我將在壓縮包中附送說明文檔和加解密的asp原始碼,大家拿回去好好研究吧。同樣,密碼10永恒正確的。那麼我們將asp裡原有的密文拿過來看看,會有什麼結果。好,兩個密碼都可以登陸。為測試我在本地假設了個iis,如果本地無法架設web伺服器,可以聯絡本人,用其他語言編寫。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。