随波逐流工作室—-探索前沿科技,分享最新软件。点击标题下蓝字“长弓三皮”关注,我们将为您提供有深度、有价值、有意思的阅读。
朋友们,现在只对常读和星标的公众号才展示大图推送,建议大家把长弓三皮“设为星标”,否则可能就看不到了啦!
作者:随波逐流
生活如梦,我愿随风起,随波流,享受每一刻的自在与轻盈。
字密1 菜单
JJEncode是一种把JS代码转换为只有符号的编码方式。
JJEncode解密:
执行路径:[随波逐流]CTF编码工具--字密1--JJEncode解密
文本框输入密文,结果区输出明文。
密文:$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"""+"\"+$.__$+$.__$+$.__$+"\"+$.__$+$.__$+$.$__+"\"+$.__$+$.__$+$.$$$+"\"+$.__$+$._$_+$.$$_+"\"+$.__$+$.___+$.$_$+"\"+$.__$+$._$_+$._$$+"\"+$.__$+$.___+$._$_+"\"+$.__$+$._$$+$._$_+"\"+$.__$+$.__$+$.$__+""")())();
明文:ILOVESBZL
解密结果:ILOVESBZL
JJEncode是一种JavaScript代码混淆技术,主要用于将字符串转换成不易被识别的形式,以防止某些安全问题,如XSS(跨站脚本攻击)或者数据窃取。下面详细介绍JJEncode编码的工作原理和过程:
编码过程:
JJEncode通过一个函数 jjencode(gv, text)实现编码,其中gv是一个全局变量,用于在编码后的字符串中引用,text是要编码的原始字符串。编码函数使用一个数组 b,包含16个不同的字符串组合,用于后续编码过程中字符的替换。
字符处理:
对于每个字符,首先获取其ASCII码值 n。如果n是双引号(0x22)或反斜杠(0x5c),将其转换为对应的16进制转义序列。对于ASCII码值在一定范围内的字符(如 0x21至0x2f,0x3A至0x40等),直接将字符添加到结果字符串s中。对于数字和特定字母( 0x30至0x39,0x61至0x66),使用全局变量gv和数组b中的字符串进行替换。对于 'l'(0x6c)、'o'(0x6f)、'u'(0x74和0x75),有特定的替换规则。对于ASCII值小于128的字符,将其8进制表示替换为对应的 gv和b中的字符串。对于ASCII值大于127的字符,将其16进制表示替换为对应的 gv和b中的字符串。
编码结果:
编码后的字符串 r由多个部分组成,包括全局变量gv的定义和初始化,以及编码后的字符串本身。最终, r被构建为一个完整的JavaScript表达式,该表达式在执行时会还原原始字符串。
使用方式:
通过调用 jjencode('$', 'alert("Hello, JavaScript")'),可以将原始的JavaScript代码'alert("Hello, JavaScript")'编码为JJEncode格式。
JJEncode编码的代码通常只包含字母、数字和部分特殊字符,这使得它在某些情况下难以被识别和拦截,从而提高了代码的安全性。然而,这种编码方式也可能被恶意利用,因此在处理来自不可信源的JavaScript代码时需要格外小心。
jjencode源代码:
functionjjencode( gv, text ){var r="";var n;var t;var b=[ "___", "__$", "_$_", "_$$", "$__", "$_$", "$$_", "$$$", "$___", "$__$", "$_$_", "$_$$", "$$__", "$$_$", "$$$_", "$$$$", ];var s = "";for( var i = 0; i < text.length; i++ ){n = text.charCodeAt( i );if( n == 0x22 || n == 0x5c ){s += "\\\" + text.charAt( i ).toString(16);}elseif( (0x21 <= n && n <= 0x2f) || (0x3A <= n && n <= 0x40) || ( 0x5b <= n && n <= 0x60 ) || ( 0x7b <= n && n <= 0x7f ) ){//}elseif( (0x20 <= n && n <= 0x2f) || (0x3A <= n == 0x40) || ( 0x5b <= n && n <= 0x60 ) || ( 0x7b <= n && n <= 0x7f ) ){s += text.charAt( i );}elseif( (0x30 <= n && n <= 0x39 ) || (0x61 <= n && n <= 0x66 ) ){if( s ) r += """ + s +""+";r += gv + "." + b[ n < 0x40 ? n - 0x30 : n - 0x57 ] + "+";s="";}elseif( n == 0x6c ){ // 'l'if( s ) r += """ + s + ""+";r += "(![]+"")[" + gv + "._$_]+";s = "";}elseif( n == 0x6f ){ // 'o'if( s ) r += """ + s + ""+";r += gv + "._$+";s = "";}elseif( n == 0x74 ){ // 'u'if( s ) r += """ + s + ""+";r += gv + ".__+";s = "";}elseif( n == 0x75 ){ // 'u'if( s ) r += """ + s + ""+";r += gv + "._+";s = "";}elseif( n < 128 ){if( s ) r += """ + s;else r += """;r += "\\"+" + n.toString( 8 ).replace( /[0-7]/g, function(c){ return gv + "."+b[ c ]+"+" } );s = "";}else{if( s ) r += """ + s;elser += """;r += "\\"+" + gv + "._+" + n.toString(16).replace( /[0-9a-f]/gi, function(c){ returngv + "."+b[parseInt(c,16)]+"+"} );s = "";}}if( s ) r += """ + s + ""+";r =gv + "=~[];" +gv + "={___:++" + gv +",$$$$:(![]+"")["+gv+"],__$:++"+gv+",$_$_:(![]+"")["+gv+"],_$_:++"+gv+",$_$$:({}+"")["+gv+"],$$_$:("+gv+"["+gv+"]+"")["+gv+"],_$$:++"+gv+",$$$_:(!""+"")["+gv+"],$__:++"+gv+",$_$:++"+gv+",$$__:({}+"")["+gv+"],$$_:++"+gv+",$$$:++"+gv+",$___:++"+gv+",$__$:++"+gv+"};"+gv+".$_="+"("+gv+".$_="+gv+"+"")["+gv+".$_$]+"+"("+gv+"._$="+gv+".$_["+gv+".__$])+"+"("+gv+".$$=("+gv+".$+"")["+gv+".__$])+"+"((!"+gv+")+"")["+gv+"._$$]+"+"("+gv+".__="+gv+".$_["+gv+".$$_])+"+"("+gv+".$=(!""+"")["+gv+".__$])+"+"("+gv+"._=(!""+"")["+gv+"._$_])+"+gv+".$_["+gv+".$_$]+"+gv+".__+"+gv+"._$+"+gv+".$;"+gv+".$$="+gv+".$+"+"(!""+"")["+gv+"._$$]+"+gv+".__+"+gv+"._+"+gv+".$+"+gv+".$$;"+gv+".$=("+gv+".___)["+gv+".$_]["+gv+".$_];"+gv+".$("+gv+".$("+gv+".$$+"\""+" + r + ""\"")())();";returnr;}
使用方式即是:
jjencode( '$', 'alert("Hello, JavaScript" )' )参数1,就类似于混淆代码中的一个全局变量,参数2就是具体要进行混淆的原JS代码。
在CTF中一般使用浏览器控制台进行解码
jsfuck、jjencode、aaencode可以被很轻易的还原:第一步:首先打开谷歌浏览器,进入浏览器控制台。第二步:去掉最后一行末尾的(),复制加密后的代码;第三步:在console控制台粘贴你第二步复制的代码;第四步:回车,达到便能得到解密后的代码。
你若喜欢,为“长弓三皮”点个赞和在看哦
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……




还没有评论,来说两句吧...