关于javascript的unescape()函数

来源:互联网 发布:儿童网络投票策划方案 编辑:程序博客网 时间:2024/06/04 18:59

       在学习加密解密的过程中,经常会碰到JavaScript的unescape()函数。今天终于把它弄明白了。JavaScript只认识Unicode字符串,所以在应用堆喷射的时候,要把C形式的shellcode转化成JavaScript的Unicode形式。假如原shellcode为

               unsigned char shellcode = “\xd9\xc0\xd9\x74\x24\xf4\xba\x3d...”

则对应的JavaScript形式的shellcode为

               var shellcode = “\uc0d9\u74d9\uf424\u3dba”

用JavaScript分配内存后,这个字符串在内存中是这样存储的 “D9 C0 D9 74 24 F4 BA 3D...”,跟C形式的一样。

       由于JavaScript的这个特殊,使得我们在写JavaScript脚本的时候得先处理一下C形式的shellcode。JavaScript提供了一个函数unescape(),其接受一个形如 “%uAABB%uCCDD” 的字符串,它可以将其变成对应的Unicode形式 “\uAABB\uCCDD”。以上面的shellcode为例,我们得先把shellcode处理成 "%uc0d9%u74d9%uf424%u3dba" 这种形式。然后再用unescape()解密,变成JavaScript的字符串“\uc0d9\u74d9\uf424\u3dba”。在内存中才会变成可执行的 “D9 C0 D9 74 24 F4 BA 3D...” 顺序。大笑  

       路过的朋友们,木要嘲笑我哦。。。每天一点小小的进步都会让我快乐,因为我相信“积跬步以至千里,积小流而成江海”的道理~ 


原创粉丝点击