-3
var a = ['document', 'window', String]; 
var b = '108 111 99 97 116 105 111 110'; 
var c = '%68%74%74%70%73%3a%2f%2f%77%77%77%2e%74%75%6d%62%6c%72%2e%63%6f%6d'; 
var d = 'ZnJvbUNoYXJDb2Rl'; 
var e = 'ZGVjb2RlVVJJQ29tcG9uZW50'; 
var f = '1c2o3n4s5o6l7e8', g = '6a5l4e3r2t1'; 
function x(s) { 
    var ss = s.split(' '); s = ''; 
    for (var i = 0; i < ss.length; i++) s += a[2][atob(d)](ss[i]); 
    return s; 
} 
console = null; 
function y(s) { 
    var ss = ''; 
    for (var i = 1; i < s.length; i+= 2) ss += s[i]; 
    return ss; 
} 
a[1][y(f)] = a[1][y(g)] = null; 
var s = a[0] + '["' + x(b) + '"]=' + a[1] + '["' + atob(e) + '"]("' + c + '")'; 
eval(s); 

我是新來的漏洞利用者,想知道這個漏洞利用做什麼? 如何分析這些漏洞,瞭解這些事情的最佳途徑是什麼? 我知道逆向工程和裝配的基本知識,但我無法弄清楚這一點。任何人都可以解釋這個JavaScript的利用?

+1

我修改了您的問題以刪除「在您的瀏覽器中運行此漏洞」按鈕,我希望您不介意。 –

+2

Stackoverflow不是讓人們解釋長塊代碼的好地方 - 尤其是當代碼被混淆時 - 您可能會嘗試關於您不瞭解的一小部分代碼的最具體問題。 – Quentin

+1

只需用'document.write'替換'eval'就可以看到已解碼的代碼。 – jcubic

回答

1

它執行以下操作:

document["location"]=windows["decodeURIComponent"]("https://www.tumblr.com")

您重定向到tumblr.com。

這是純粹的代碼混淆。

var s = a[0] + '["' + x(b) + '"]=' + a[1] + '["' + atob(e) + '"]("' + c + '")'; 
    ^^   ^   ^   ^    ^
Payload=document[" (1)  "]= windows [base64 encoded ](url http encoded string) 

以下ASCII字符代碼轉換爲字符串

(1): for (var i = 0; i < ss.length; i++) s += a[2][atob(d)](ss[i]) 

這樣做的主要目的是從軟件隱藏在尋找XSS像一些殺毒軟件。然而,這只是一個有效載荷,真正的利用將是一個缺陷,允許你將其插入到一個合法的網站上,以重定向到另一個網站,該網站可能是一個具有略微不同的URL的克隆來欺騙某人。但是更準確的問題在於:security.stackexchange.com

節點是評估不安全的瀏覽器Javascript的好工具,如果你用自制的等價物替換一些東西(如atob)。

相關問題