gpt4 book ai didi

javascript - Javascript遗留的噩梦-试图绕过一些压缩的JavaScript

转载 作者:行者123 更新时间:2023-12-03 16:48:45 25 4
gpt4 key购买 nike

随便一个家伙,但是我为我们的系统排队过程选择了一个旧的遗留项目,很不幸,现在我正试图将所有部分拼凑在一起,没有任何文档-是的,我说没有文档!

我真正挣扎的部分是这段非常丑陋的javascript-我可以看到它处于一个间隔中,它每隔400毫秒就不断提交一个表单,但这只是我试图解决的中间所有的精神错乱。

(function(){
var a = function() {try{return !!window.addEventListener} catch(e) {return !1} },
b = function(b, c) {a() ? document.addEventListener("DOMContentLoaded", b, c) : document.attachEvent("onreadystatechange", b)};
b(function(){
var a = document.getElementById('cf-content');a.style.display = 'block';
setTimeout(function(){
var s,t,o,p,b,r,e,a,k,i,n,g,f, OBQXEnQ={"GMuEaNBC":+((!+[]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![])+(+[])+(+[])+(!+[]+!![]+!![])+(!+[]+!![]+!![]+!![])+(!+[]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]))/+((!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(+[])+(!+[]+!![]+!![]+!![])+(+[])+(!+[]+!![]+!![]+!![])+(+[])+(!+[]+!![]+!![]+!![]+!![]+!![])+(+[])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]))};
g = String.fromCharCode;
o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
e = function(s) {
s += "==".slice(2 - (s.length & 3));
var bm, r = "", r1, r2, i = 0;
for (; i < s.length;) {
bm = o.indexOf(s.charAt(i++)) << 18 | o.indexOf(s.charAt(i++)) << 12
| (r1 = o.indexOf(s.charAt(i++))) << 6 | (r2 = o.indexOf(s.charAt(i++)));
r += r1 === 64 ? g(bm >> 16 & 255)
: r2 === 64 ? g(bm >> 16 & 255, bm >> 8 & 255)
: g(bm >> 16 & 255, bm >> 8 & 255, bm & 255);
}
return r;
};
t = document.createElement('div');
t.innerHTML="<a href='/'>x</a>";
t = t.firstChild.href;r = t.match(/https?:\/\//)[0];
t = t.substr(r.length); t = t.substr(0,t.length-1);
a = document.getElementById('jschl-answer');
f = document.getElementById('challenge-form');
;OBQXEnQ.GMuEaNBC+=+((!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(+[])+(!+[]+!![]+!![]+!![])+(+!![])+(!+[]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![])+(+!![]))/+((!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+!![]+!![]+!![])+(!+[]+!![])+(!+[]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![])+(!+[]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]));OBQXEnQ.GMuEaNBC-=+((!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(+[])+(!+[]+!![]+!![]+!![])+(+!![])+(!+[]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]))/+((+!![]+[])+(!+[]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![])+(+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(+!![])+(+[])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]));OBQXEnQ.GMuEaNBC+=+((!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(+[])+(!+[]+!![]+!![]+!![])+(+!![])+(!+[]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]))/+((!+[]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]));OBQXEnQ.GMuEaNBC+=+((!+[]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![])+(+[])+(+[])+(!+[]+!![]+!![])+(!+[]+!![]+!![]+!![])+(!+[]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]))/+((!+[]+!![]+!![]+!![]+[])+(!+[]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![])+(+[])+(+[])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]));a.value = (+OBQXEnQ.GMuEaNBC + t.length).toFixed(10); '; 121'
f.action += location.hash;
f.submit();
}, 4000);
}, false);
})();

这是标记
  <form id="challenge-form" action="/Queue.aspx?__cf_chl_jschl_tk__=5f04d92efb1edb011edabc24cda3a235e06eb8ba-1581158560-0-AW-KwafTO7e0NxbCGPpzLlWrAU7w5hIso3jE7mgZFhCOvFb1g3xqglnwGhj6WL-2y_ECUZbobHbvPBykf59dve4xLS5aozksjkZkH12e8LOF1svbylQRNURkKmiILeAOhzeKXmzSH4ipu1OhgrKsjNfLgvcXIWz4a24GCSxxjNZKnLmsKLI3pPcN6SxeZASqynHvvZVf1n6Xa297FqIEu2a44P0_ztTkpIJodgatQyaXHrI4zYudSNdD_OGEmgCpyhuyHLjx8un4ILE2lcKwecKmWx2UZlzttaeQgsqJP3vd" method="POST" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="r" value="10a1cf729542cb5335935dbd86df47dfd6e6c413-1581158560-0-AbUplhHDvPuYV2B2BYVsWPZBU73o1fTlVXNJ/9uyPNG3D37ODbaeVdeHe5X51WlC6rAwkqXWDPrLJUyVCBDMU+rvLP38yZycbr3c95pZiUAa1NGWDB8ebbDB2Rcyanw5UKxYCgSCMGtxNlypoWJprK4p2RNjI5fG/9r+7nY7es28+MQC2morY38wCjTpKbY0SREp2iCToPB0uq8nlQwkHTK8jjuNYK4ZK+zYKVffgT+U6s62z8sglX1YA83iSzCWgM3piWdTvtz6TKddEuHMmY6RsOcaog8DuuO5+RqT0Re9qaGUO9x/pCf6N4ho5Ms1byBnPYtzD1gnnlfKjtD29FEGcsz1U1x4aRe8D6SqvzTb/IEudytoLLWpL4Q9oSKv4t8DdwZs6I5w5LMBcltUOjm69ptN+qFg/m+0hzFzHXAOaLcu1UZU725QQofIPQw21ofFsDihHXYHiuSEZq1jZMAcOKtaq8pY4fyzxyccV6qvfz4p1U3RuWnplKt6OP33dquly4DlJOamOuAnrPz3oWOQLJ5tDz95mg8GdbzvX088pe1nh9dp1YTDup82zIv3Gebme2/pzPCKjcCxBOOJHEK1H0i5qZoNi6WROohbvPc0kGwxyJWsGD1sXY2QpAfw0Mt2IXujShOOtD94JY4Yc7cLx4H4YPbqKh+ouwf9FRWH6dWTz6hnIMmNtbduNrgDxfl0rlWSyyeIOzty9HXg4+K9mvw4E5irwxdXJ2mDfHsqbbiGvGlwkcq1bAioSGYh3sL3fqenRkVEdJIGKE29wg93v7ZgeD+lIaFmF6Zy0nv1MSY8KVkZrERoFSGlJJgbTG3rkHagIKa72rs4h0d07wkJNIqkKwrJtS8txO+KVpyalCbVrqhb1yocmaFysoV5P1IFPTNrzocZelCkqMMq4Mquxq0TpIwEWvxfMN6JwXuM+7hrp7rD7hJzCDqJUiitA3TIUybw6FSie/Bwdq3fPHhnwg8dpVn372hcK/l9UPcyR+b+TReMy6HxO+/qPiNiYpQ/vuYjTs5efIeJ4hULJl2JRNV6LkPAf2Ees4KvBBVp2FjBubxjYmfORygZIjCQUCP2WcgXD34zy4w8kwngxsKiQ8UhHsiehvAl//5J1tA5H6Me9RuReJ8kWmelnFP+mrV4RnMpjmFifmRY9pwYQb1AIkl7VGsi5eR6Vmeq2Bb/iRhyFxIIpxzHJV9GF/rrO37/vjlTFxNUQ72CTS38jtUBaQivCFx2+qb/kfI5nW4DP3LOTUz9D/zJGmWYHKkz3G2jX/UWDWm2CzbtfsLLfzercuWl3hPqkdwqg/QZz9G05Qayf+jKCC+mWYuSNL8MHXxZereb6jPMyAu8n9jtVjXAxgtGGZMuIqXK+HOCMMMfQL4zxuUBe4Z6lJ45XiL0Hn0fX9JPY5ahi0zzX7ZSLSL3E2iiDcHbFxvByBYNNh1uTaxKoJyxVCrYZFBbpUkriI01N5u//u3nc5RYcgTsbsuC/31cDqmTO0KNkbN0/BYN9gG0qP4q2Hf0CaIGgw/Ip7QwzmF491opP8iIysH8kEp4rMSjeL6XIVLjhGN9dXfWcklq9G9A0iaIj2b2O1ra0y6nCauN+8DTWPRbz4pmDUryfDkG35/kk8wzqG5Yp5+TTeX9+4MJGMm5wz5fa3K8vi7sn4wdneroVB2TIb6evQZ//eSWFgEw67MFOW86+ROj"></input>
<input type="hidden" name="jschl_vc" value="d308f58453fdc399f02de1819459f64d"/>
<input type="hidden" name="pass" value="1581158564.634-jWe4nK3hOC"/>
<input type="hidden" id="jschl-answer" name="jschl_answer"/>

最佳答案

让我们看看如何才能逐个主题理解这段代码。

括号混淆的表达式。

这些可能会调用函数,因此让我们确切地了解它们的作用。它们始终在单个除法中显示为分子或分母。所以我在这里列出所有使用的分子/分母:

+((!+[]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![])+(+[])+(+[])+(!+[]+!![]+!![])+(!+[]+!![]+!![]+!![])+(!+[]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]))
+((!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(+[])+(!+[]+!![]+!![]+!![])+(+[])+(!+[]+!![]+!![]+!![])+(+[])+(!+[]+!![]+!![]+!![]+!![]+!![])+(+[])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]))
+((!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(+[])+(!+[]+!![]+!![]+!![])+(+!![])+(!+[]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![])+(+!![]))
+((!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+!![]+!![]+!![])+(!+[]+!![])+(!+[]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![])+(!+[]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]))
+((!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(+[])+(!+[]+!![]+!![]+!![])+(+!![])+(!+[]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]))
+((+!![]+[])+(!+[]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![])+(+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(+!![])+(+[])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]))
+((!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(+[])+(!+[]+!![]+!![]+!![])+(+!![])+(!+[]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]))
+((!+[]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]))
+((!+[]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![])+(+[])+(+[])+(!+[]+!![]+!![])+(!+[]+!![]+!![]+!![])+(!+[]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]))
+((!+[]+!![]+!![]+!![]+[])+(!+[]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![])+(+[])+(+[])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]))

这些表达式仅适用于几个不同的组件:
!![]
!+[]
(+[])
[]
!![]!+[]的计算结果为 true,并且由于它们都显示为加法或一元加法的操作数,因此它们被强制为 1。替换为:
+((1+1+1+1+1+1+1+[])+(1+1+1+1+1+1+1+1+1)+(1+1+1+1+1+1+1)+(+[])+(+[])+(1+1+1)+(1+1+1+1)+(1+1+1)+(1+1+1+1+1+1+1))
+((1+1+1+1+1+1+1+1+1+[])+(+[])+(1+1+1+1)+(+[])+(1+1+1+1)+(+[])+(1+1+1+1+1+1)+(+[])+(1+1+1+1+1+1+1+1+1))
+((1+1+1+1+1+1+1+1+[])+(1+1+1)+(1+1+1+1+1+1+1+1)+(+[])+(1+1+1+1)+(+1)+(1+1+1+1+1+1)+(1+1+1+1)+(+1))
+((1+1+1+1+1+1+1+1+1+[])+(1+1+1+1)+(1+1)+(1+1+1)+(1+1+1+1+1+1+1+1)+(1+1+1+1+1+1+1)+(1+1+1+1+1)+(1+1)+(1+1+1+1+1+1+1+1))
+((1+1+1+1+1+1+1+1+[])+(1+1+1)+(1+1+1+1+1+1+1+1)+(+[])+(1+1+1+1)+(+1)+(1+1+1+1+1+1)+(1+1+1+1)+(1+1+1+1+1+1+1))
+((+1+[])+(1+1)+(1+1+1+1+1+1+1)+(+1)+(1+1+1+1+1+1+1+1+1)+(+1)+(+[])+(1+1+1+1+1+1+1+1+1)+(1+1+1+1+1+1+1+1+1))
+((1+1+1+1+1+1+1+1+[])+(1+1+1)+(1+1+1+1+1+1+1+1)+(+[])+(1+1+1+1)+(+1)+(1+1+1+1+1+1)+(1+1+1+1)+(1+1+1+1+1+1+1))
+((1+1+1+1+1+1+[])+(1+1)+(1+1+1+1+1+1)+(1+1+1+1+1+1+1)+(1+1+1+1+1+1+1+1)+(1+1+1+1+1+1)+(1+1+1+1+1+1+1)+(1+1+1+1+1+1+1+1)+(1+1+1+1+1))
+((1+1+1+1+1+1+1+[])+(1+1+1+1+1+1+1+1+1)+(1+1+1+1+1+1+1)+(+[])+(+[])+(1+1+1)+(1+1+1+1)+(1+1+1)+(1+1+1+1+1+1+1))
+((1+1+1+1+[])+(1+1+1+1)+(1+1+1+1)+(1+1+1+1+1+1)+(1+1+1+1+1+1)+(+[])+(+[])+(1+1+1+1+1+1+1)+(1+1+1+1))
(+[])组件的值为0,其余 +[]触发字符串连接,因此对应于 +""。结果:
+((1+1+1+1+1+1+1+"")+(1+1+1+1+1+1+1+1+1)+(1+1+1+1+1+1+1)+0+0+(1+1+1)+(1+1+1+1)+(1+1+1)+(1+1+1+1+1+1+1))
+((1+1+1+1+1+1+1+1+1+"")+0+(1+1+1+1)+0+(1+1+1+1)+0+(1+1+1+1+1+1)+0+(1+1+1+1+1+1+1+1+1))
+((1+1+1+1+1+1+1+1+"")+(1+1+1)+(1+1+1+1+1+1+1+1)+0+(1+1+1+1)+(+1)+(1+1+1+1+1+1)+(1+1+1+1)+(+1))
+((1+1+1+1+1+1+1+1+1+"")+(1+1+1+1)+(1+1)+(1+1+1)+(1+1+1+1+1+1+1+1)+(1+1+1+1+1+1+1)+(1+1+1+1+1)+(1+1)+(1+1+1+1+1+1+1+1))
+((1+1+1+1+1+1+1+1+"")+(1+1+1)+(1+1+1+1+1+1+1+1)+0+(1+1+1+1)+(+1)+(1+1+1+1+1+1)+(1+1+1+1)+(1+1+1+1+1+1+1))
+((+1+"")+(1+1)+(1+1+1+1+1+1+1)+(+1)+(1+1+1+1+1+1+1+1+1)+(+1)+0+(1+1+1+1+1+1+1+1+1)+(1+1+1+1+1+1+1+1+1))
+((1+1+1+1+1+1+1+1+"")+(1+1+1)+(1+1+1+1+1+1+1+1)+0+(1+1+1+1)+(+1)+(1+1+1+1+1+1)+(1+1+1+1)+(1+1+1+1+1+1+1))
+((1+1+1+1+1+1+"")+(1+1)+(1+1+1+1+1+1)+(1+1+1+1+1+1+1)+(1+1+1+1+1+1+1+1)+(1+1+1+1+1+1)+(1+1+1+1+1+1+1)+(1+1+1+1+1+1+1+1)+(1+1+1+1+1))
+((1+1+1+1+1+1+1+"")+(1+1+1+1+1+1+1+1+1)+(1+1+1+1+1+1+1)+0+0+(1+1+1)+(1+1+1+1)+(1+1+1)+(1+1+1+1+1+1+1))
+((1+1+1+1+"")+(1+1+1+1)+(1+1+1+1)+(1+1+1+1+1+1)+(1+1+1+1+1+1)+0+0+(1+1+1+1+1+1+1)+(1+1+1+1))

现在,我们可以计算出用它们求和的值替换那些1 + 1 + ... + 1(尚不处理括号):
+((7+"")+(9)+(7)+0+0+(3)+(4)+(3)+(7))
+((9+"")+0+(4)+0+(4)+0+(6)+0+(9))
+((8+"")+(3)+(8)+0+(4)+(+1)+(6)+(4)+(+1))
+((9+"")+(4)+(2)+(3)+(8)+(7)+(5)+(2)+(8))
+((8+"")+(3)+(8)+0+(4)+(+1)+(6)+(4)+(7))
+((+1+"")+(2)+(7)+(+1)+(9)+(+1)+0+(9)+(9))
+((8+"")+(3)+(8)+0+(4)+(+1)+(6)+(4)+(7))
+((6+"")+(2)+(6)+(7)+(8)+(6)+(7)+(8)+(5))
+((7+"")+(9)+(7)+0+0+(3)+(4)+(3)+(7))
+((4+"")+(4)+(4)+(6)+(6)+0+0+(7)+(4))

可以删除 (+1中其余的内部一元加运算符,也可以删除除外部括号之外的所有其他运算符:
+(7+""+9+7+0+0+3+4+3+7)
+(9+""+0+4+0+4+0+6+0+9)
+(8+""+3+8+0+4+1+6+4+1)
+(9+""+4+2+3+8+7+5+2+8)
+(8+""+3+8+0+4+1+6+4+7)
+(1+""+2+7+1+9+1+0+9+9)
+(8+""+3+8+0+4+1+6+4+7)
+(6+""+2+6+7+8+6+7+8+5)
+(7+""+9+7+0+0+3+4+3+7)
+(4+""+4+4+6+6+0+0+7+4)

现在,所有内部加号运算符都是字符串连接,因此计算结果为:
+("797003437")
+("904040609")
+("838041641")
+("942387528")
+("838041647")
+("127191099")
+("838041647")
+("626786785")
+("797003437")
+("444660074")

剩下的一元运算符执行最终评估:
797003437
904040609
838041641
942387528
838041647
127191099
838041647
626786785
797003437
444660074

您可以像在开发控制台中那样评估表达式,但是通过这种方式,您可以绝对确定没有任何可能被忽略的隐藏副作用或依赖项。
OBQXEnQ.GMuEaNBC的值

将上述表达式简化为它们的数值后,我们得到:
var OBQXEnQ = {
"GMuEaNBC": 797003437 / 904040609;
};
OBQXEnQ.GMuEaNBC += 838041641 / 942387528;
OBQXEnQ.GMuEaNBC -= 838041647 / 127191099;
OBQXEnQ.GMuEaNBC += 838041647 / 626786785;
OBQXEnQ.GMuEaNBC += 797003437 / 444660074;

...因此可以简化为:
var OBQXEnQ.GMuEaNBC = 797003437 / 904040609 + 838041641 / 942387528 - 838041647 / 127191099 + 838041647 / 626786785 + 797003437 / 444660074;

...是:
var OBQXEnQ.GMuEaNBC = -1.6885301087751048;

变量 s,t,o,p,b,r,e,a,k,i,n,g
我们忽略了提示:-)

既然我们已经解码了混淆的表达式,那么很明显,永远不会调用 e。因此,我们可以从代码中删除该函数。

变量 og仅在 e中使用,因此也可以从代码中删除它们。

在变量 s,t,o,p,b,r,e,a,k,i,n,g中,我们目前仅需要保留 tra。其他未使用。

宽松表达式 '; 121'也不起作用。
t.length的值

代码中包含以下部分:
t = document.createElement('div');
t.innerHTML="<a href='/'>x</a>";
t = t.firstChild.href;
r = t.match(/https?:\/\//)[0];
t = t.substr(r.length);
t = t.substr(0,t.length-1);

这是执行 t = location.host的复杂方法。 t的唯一用途是在以后的表达式中使用它的 length

因此 t.length变成 location.host.length。但很明显,这取决于此javascript在哪里运行。在下面的评论中,您提到此页面的网址,因此 t的计算结果为“queue-tickets.liverpoolfc.com”,因此 t.length为29。

通过这种简化,我们不再需要变量 tr

分配给 a.value的值

我们已将 a.value的分配减少为:
a.value = (-1.6885301087751048 + location.host.length).toFixed(10);

如前所述, location.host.length为29。因此,以上等效于:
a.value = "27.3114698912";

监听 DOMContentLoaded事件的函数
ab这两个函数旨在在加载文档时执行代码,并且与IE9之前的版本向后兼容。

参数变量 c在实际调用 false时获取值 b,但这是 addEventListener的默认值;我们可以省略。

因此,忽略IE8兼容性问题,对 b的调用等效于:
document.addEventListener("DOMContentLoaded", callback);

因此,我们也可以跳过这两个函数的定义。由于这些是直接在IIFE外部范围中直接定义的变量,因此我们也可以不考虑该IIFE。

结果:

上述减少导致此代码:
document.addEventListener("DOMContentLoaded", function () {
document.getElementById('cf-content').style.display = 'block';
setTimeout(function () {
document.getElementById('jschl-answer').value = "27.3114698912";
var f = document.getElementById('challenge-form');
f.action += location.hash;
f.submit();
}, 4000);
});

客户端服务器

此客户端代码将表单提交到服务器页面 Queue.aspx。它通过URL和POST负载传递信息。

URL有两点信息:
  • __cf_chl_jschl_tk__=:硬编码值
  • #:所谓的“哈希”,它只是当前URL哈希(在#符号之后)中任何内容的重复。

  • POST有效负载具有以下功能:
  • r=:硬编码值
  • jschl_vc=:硬编码值
  • pass=:硬编码值
  • jschl-answer=:在您的实时网站上运行时,JavaScript代码提供的值,即“27.3114698912”。

  • 当前页面加载4秒后,此HTTP请求便提交给 Queue.aspx

    由于您的问题没有提供有关 Queue.aspx使用该信息的信息,因此我的分析到此结束。

    如果您可以控制 Queue.aspx,那么所有这些分析实际上都是无关紧要的,因为您可以简单地在 Queue.aspx的ASP(.NET)代码中添加一些日志记录,然后查看:
  • 客户端提交的POST变量jschl-answer
  • 中到底是什么
  • 返回给客户端的内容:哪个URL重定向(如果有)和哪些内容。

  • 附录

    我自己尝试使用实时URL时,我注意到它会编写一个cookie,以便下次您访问该URL时,立即进行重定向。

    最初的4秒延迟(带有 setTimeout)似乎仅是为了防止网站上的批量攻击(DOS攻击)。但是,这是非常简单的措施,可以轻松绕开。

    关于javascript - Javascript遗留的噩梦-试图绕过一些压缩的JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60126855/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com