浅谈XSS
随着网络时代的飞速发展,网络安全问题越来越受大家的关注,而SQL注入的攻击也随着各种防注入的出现开始慢慢的离我们而去,从而XSS跨站脚本攻击也慢慢的开始在最近几年崛起,也应对了'没有绝对的安全'这句话。
XSS攻击:它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。
大家刚接触XSS的时候和我大概也差不多,都是在不断的在各种搜索栏,地址栏中或者注册栏中疯狂的使用<script>alert('xss')</script>之类的语句进行测试,从而得到的效果几乎80%都是<script>alert('xss')</script>出现这样的,或者是scriptalertxssscript再或者是scriptalert('xss')script。在大家看来只要能输入的地方大多数都是这样输入的,其实这存在着一个问题。例如在dom输出的也许是<input type="text" value="搜索内容">过滤了<>那么就完全没办法,使用<script>alert('xss')</script>之类的语句,怎么办?我们思考一下,在input标签中有一个触发和点击事件,我们也可以考虑下使用闭合value中的内容来增加一个点击事件,好,我们直接来看下例如:我们搜索的内容是aaaa,那么标签中应该是这样显示的<input type="text" value="aaaa"> 我们来改一下aaaa。我们改为aaaa" onclick=javascript:alert('xss')那么在<input type="text" value="aaaa">中会出现的就是 <input type="text" value="aaaa" onclick=javascript:alert('xss')> 当用户点击我们的搜索框的时候就会弹出一个XSS的对话框,这个只是测试,之后如何调用js获取cookie或者是钓鱼之类都是靠大家的想象力去做,再如果,当程序员过滤了script或者是"怎么办?大家可以看我日记的之前几章内容,在chrome下按F12,然后查找你输入的搜索内容,一般搜索的地方都会在一个script标签中出现,例如新浪网知识人某问题搜索的地方,过滤了"经过测试发现没有过滤',这个就是一个线索,然后在审核元素中发现在我们搜索的时候新浪会在一个script标签中给一个这样的东西
<script> function thisinit(){$("syzs1").value = 50 - document.login.title.value.length;$("syzs2").value = 3000 - document.login.description.value.length;getTitleContent ('aaaa', '0');getTitleClass('0');autotenms();} </script>
我们可以很明显的看到我们所搜索的aaaa出现在了这里面,我们现在来简单的构造一下,再构造之前和大家说一下一些关于javascript的东西,在javascript中,当一行语句出现错误的时候其他一些js语句是无法执行的,//是js中的注释,首先教大家的是一种简单的方法。
getTitleContent ('aaaa', '0');我们首先将这条语句先结束掉,然后在执行我们的js代码,我们直接来写 首先,aaaa','0')这样,我们就已经结束了这条语句,程序会认为是一条完整的语句,这只是第一步,因为我们这些程序会变成这样getTitleContent ('aaaa','0')', '0');这样说会报错的对吧,我们继续来写aaaa','0');alert('xss')//aaaa,这样程序就会变成了getTitleContent ('aaaa','0');alert('xss')//aaaa,', '0');我们来分析一下,首先程序先执行getTitleContent ('aaaa','0');然后执行alert,最后因为我们注释掉了//aaaa,', '0');所以后面的东西程序不会理会。这样,我们的程序就没有错了,xss自然就触发了。
说完这个,再说一种情况,如果程序过滤了//和;一号店的搜索地方就是这样的(前面日记中也有提到)搜索的地方也出现了一个script标签,这样的
<script>trackerContainer.addParameter(new Parameter("internalKeyword","aaaa"));</script>
按照刚才我们的思路是这样写的对吧trackerContainer.addParameter(new Parameter("internalKeyword","aaa"));alert('xss)//aaa"));
思路没错,但是人家过滤了//和;人家也想到了这一点,怎么办呢?其实在XSS中还有一种方法,就是+执行语句+这样一个东西,也就是连接符。例如
<script>var b='123';document.write('a'+b+'a');</script>
在html中会显示a123a 我们看到的是字符串a和一个+b+和一个字符串a啊,怎么会出现123呢???因为我们的b是一个变量,里面赋值了字符串123,然后+b+是插入到我们的aa中间,所以输出的是a123a,好,我们知道了这个原理之后,我们就大概知道我们下面应该做什么了,也就是trackerContainer.addParameter(new Parameter("internalKeyword","aaaa"+alert('xss')+"a"));这样,我们应该在搜索的地方怎么写呢?我猜聪明的你们应该想到了,是这样的aaa"+alert('xss')+"a,这样写就写好了,也许眼睛尖的人会看到一个地方就是"a为什么要这样写? 这个很简单,因为本来程序将我们搜索的地方放在了""中,如果我们再加一个"的话就变成了trackerContainer.addParameter(new Parameter("internalKeyword","aaaa"+alert('xss')+"a""));程序就自然而然的出错了。好,说到这里大家已经懂得了如何在过滤中找突破,但是这个只是在反射性中比较有效果,虽然有些也有可能变成存储性,这个例子说明了,XSS执行过程不一定要在页面中显示,他会隐藏在dom中,只是你没有发现,存储性XSS以后也会在和大家谈,因为时间关系,今天就暂时写到这里,大家下期再见
>更多相关文章
- 11-15不看后悔!程序员防御XSS的无奈
- 11-10揭秘Web黑客3种注入点判断方法
- 11-10黑客Web脚本注入攻击深度剖析
- 10-21全球无线网络面临黑客攻击风险 WiFi曝安全漏洞
- 02-24iPhone再爆安全漏洞 黑客1分钟可盗照片及加密信息
- 02-22互联网金融风险 警示网站漏洞或成“致命点”
首页推荐
佛山市东联科技有限公司一直秉承“一切以用户价值为依归
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 12-05亚马逊推出新一代基础模型 任意模态生成大模
- 12-05OpenAI拓展欧洲业务 将在苏黎世设立办公室
- 12-05微软质疑美国联邦贸易委员会泄露信息 督促其
- 12-05联交所取消宝宝树上市地位 宝宝树:不会对公
- 12-04企业微信致歉:文档打开异常已完成修复
相关文章
24小时热门资讯
24小时回复排行
热门推荐
最新资讯
操作系统
黑客防御