您的位置:首页 > Web前端 > JavaScript

关于javascript的unescape()函数

2011-08-19 21:07 141 查看
在学习加密解密的过程中,经常会碰到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...” 顺序。



路过的朋友们,木要嘲笑我哦。。。每天一点小小的进步都会让我快乐,因为我相信“积跬步以至千里,积小流而成江海”的道理~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: