Board logo

标题: [讨论]寻求一段最短的js代码 [打印本页]

作者: MAYA    时间: 2008-7-25 14:00     标题: [讨论]寻求一段最短的js代码

[讨论]寻求一段最短的js代码
文章作者:Inking
信息来源:邪恶八进制信息安全团队(www.eviloctal.com)

在跨站中我们经常会利用style属性来引入js代码,假设我的js代码很多,而且这里的插入有字符长短的限制,那我们便会用远程方式调用,现在想向大家请教一下如何的调用方式才是最短的

我现在的方式:
createElement,然后appendChild
本来想用innerHTML,但是发现用innerHTML引入这样的代码后"<script src=a.js></script>"a.js好像并不被调用或者这样的方式也不行.
document.getElementById(&#39;test&#39;).innerHTML+="<script>alert(&#39;a&#39;)</script>"
Inking's Blog http://www.inkings.cn
帖子64 精华0 积分3162 阅读权限100 在线时间116 小时 注册时间2007-5-26 最后登录2008-7-15 查看详细资料TOP 赚更多的钱

inking
荣誉会员

作者: 网上网下    时间: 2008-7-25 14:00

额...这个问题放了这么多天还是没有人回答,我提出问题的当天自己就解决了,还是我自己来回答吧

我之前提出这个问题主要是因为利用的漏洞是ubb漏洞,当插入某些js代码时页面本身的js代码会干扰我的js的运行,所以我采用了10进制加密的方法来绕过,但是当十进制加密后代码过长,无法写入了,所以需要一段更加短小的代码来代替.但是找了很久也找不到,后来在langouster在邪八的文章<一个不为人知的感染几百万校内网用户的蠕虫分析>中利用蠕虫的作者的倒着写入js代码,然后用vbs的StrReverse函数倒回来,然后用execute来执行,这样页面原来的代码就不会干扰我的js代码,而且也省下了代码

如果大家有更加好的办法请分享呵呵.有些问题虽然简单,但是有时候也能通过回答发现自己在某些地方的不足的^_^Inking's Blog http://www.inkings.cn
帖子64 精华0 积分3162 阅读权限100 在线时间116 小时 注册时间2007-5-26 最后登录2008-7-15 查看详细资料TOP 赚更多的钱

bink
荣誉会员

作者: kinsaang    时间: 2008-7-25 14:00

我很菜,不是很明白,可否麻烦楼主举个例子?很好.
帖子660 精华4 积分5585 阅读权限100 性别男 在线时间247 小时 注册时间2005-9-2 最后登录2007-12-4 查看详细资料TOP 软件项目外包

inking
荣誉会员

作者: hjh    时间: 2008-7-25 14:00

引用:
引用第2楼bink于2007-11-13 10:46发表的 :
我很菜,不是很明白,可否麻烦楼主举个例子?
额...可能是我说得不明白吧
比如我要在个人签名档里面插入这段蠕虫代码
复制内容到剪贴板
代码:
[color=green" style="background:url(javascript:eval(String.fromCharCode(这里为我要执行的js代码的十进制)))]
由于我的js代码里面含有url地址,页面里转换ubb的js代码会误将我的url看作ubb代码,所以整个js语句就乱掉了,所以我将js代码转换成十进制.但是转成十进制后代码变长了3倍多
如果用vbs就能够将代码缩短到和不转换时差不多,代码如下
复制内容到剪贴板
代码:
[color=green" style=&#39;background:url(vbscript:execute(StrReverse("这里为我的js代码")))&#39;]
这样里面的http://...就变成了ptth,页面本身的js代码就不会将http地址转换成
<a href=http://...>http://...</a>了,因为它已经认不出了Inking's Blog http://www.inkings.cn
帖子64 精华0 积分3162 阅读权限100 在线时间116 小时 注册时间2007-5-26 最后登录2008-7-15 查看详细资料TOP

bink
荣誉会员

作者: 枫枫    时间: 2008-7-25 14:00

我明白了,UBB的解析程序我写过,呵呵,至于代码压缩嘛就像你上面那样,脚本语言不单是JS,VBS 也行滴。换一个语言他的编码方式就可以用另外一种了。很好.
帖子660 精华4 积分5585 阅读权限100 性别男 在线时间247 小时 注册时间2005-9-2 最后登录2007-12-4 查看详细资料TOP 让女孩一夜变的更有女人味

ninty
晶莹剔透§烈日灼然
作者: 麦兜    时间: 2008-7-25 14:00

innerHTML 无法实现 只能通过createElement再appendChild来实现
就算innerHTML能实现。
innerHTML+="<script>alert(&#39;a&#39;)</script>"

你这样写也肯定是不对的 。 你可以在editplus写一下这些代码 就会发现字符串里的</script>变色了。
浏览器会把它当做是<script>标签的结束标记。
应该这么写才对"<script>alert("a")</"+"script>"

===========================================
菜鸟之见 高手莫笑。。
帖子10 精华0 积分40 阅读权限40 性别男 在线时间26 小时 注册时间2007-11-10 最后登录2008-6-28 查看详细资料TOP 良辰择日,预测咨询,公司改名,权威易经

ninty
晶莹剔透§烈日灼然
作者: terry    时间: 2008-7-25 14:00

首先对于我的无知 向楼主道歉。
上面我说的太绝对了:innerHTML 无法实现
今天知道了innerHTML的实现方法
可以这样做
document.body.innerHTML += "<script defer>alert(&#39;动态添加的JS代码&#39;)</"+"script>";
注意加了个defer属性
=====================================================================
BAIDU到的信息:
defer属性指示该段脚本不会改变文档的内容。在文档完全显示之前,js解释器不执行这段代码。
因为js不允许动态生成js代码,所以去掉defer后产生的代码会被认为是非法的。加上defer后的代码,会被解释器认为是载入页面的时候跳过去的,可以执行。
帖子10 精华0 积分40 阅读权限40 性别男 在线时间26 小时 注册时间2007-11-10 最后登录2008-6-28 查看详细资料TOP 让女孩一夜变的更有女人味

我心打烊
晶莹剔透§烈日灼然




欢迎光临 【3.A.S.T】网络安全爱好者 (http://3ast.com./) Powered by Discuz! 7.2