XSS进阶二

实验来源:合天网安实验室

实例四、换一个角度,阳光依旧

      关键代码:

分析:首先preg_match函数是php的正则表达式匹配函数,一旦从$_GET['name']中匹配到script这个字眼,i参数忽略大小写,die() 函数输出一条消息--errpr,并退出当前脚本,下面的代码就不会再执行,这样的话script标签是不能用的啦,只能用的只能是其他标签,XSS进阶一里面的最后一个例子的img标签试试,应该是可以的,因为可以绕过if语句啊,结果请看下面,可以吧

 

任务一

根据实例四的代码提示,下面哪种方式能成功:  【单选题】  题目已完成,2 

【A】<img src=1 οnlοad=alert(1)>【B】<img src=1 οnerrοr=alert(1)>【C】<img src=1 οnchange=alert(1)>【D】<img src=1 οnfοcus=alert(1)> B:就不说了, A:onload事件会在页面或图像加载完成后立即发生,因为1压根就不是图片,怎么加载完成了,所以不会执行alert函数, C:onchange 属性适用于:<input>、<textarea> 以及 <select> 元素。 D:onfocus 事件在对象获得焦点时发生,图像都没怎么获取焦点 实践才是检验真理的标准

实例五、限制了我的左手,我还有右手

     关键代码:


分析:preg_match匹配alert,并忽略大小写,不过改为大写的话,函数也不能行的啦,这样alert函数就不行了吧,还有其他函数啊,如prompt(提示消息框),confirm(确认消息框)啊,具体看图:


confirm就是比alert多了个取消按钮


任务二

根据实例五的代码提示,下面哪种方式不能成功:  【单选题】  题目已完成,2 

【A】<SCRIPT>confirm()</SCRIPT>【B】<script>confirm()</script>【C】<img src=1 οnerrοr=confirm()>【D】javascript:confirm()这个很明显是D了,C不用说了,script没过滤,A,B肯定可以啦

实例六、大胆去思考,小心去求

      关键代码:


分析:首先php将get获取到的值输出出来,那么就是$_GET['name']的值当做字符串复制给js的$a变量了,xss很常说的一个是什么标签闭合什么的,这里能不能语句闭合呢


我们看看源码


整理一下就是:

[javascript] view plain copy
  1. <script>  
  2.     var $a = "";  
  3.     alert("bye!");  
  4.     "";  
  5. </script>  
这就是正常的js代码,不过最后一句(不过语法是没错的),在本地也测试了



当然这样会好理解一点


任务三

根据实例六的代码提示,下面哪种方式能成功:  【单选题】  题目已完成,2 

【A】a';alert($a);$a='【B】a";alert($a);$a="【C】a';alert($a);$a="【D】a”;alert($a);$a='根据上面的实验,肯定是选B啦,原因是单引号不能够跟前面或者后面的双引号匹配啊
分析与思考

1.以上过滤会有哪方面的缺陷?实例四:只过滤了script标签实例五:只过滤alert函数实例六:这个没过滤吧

2.如果你是一个防御者如何修改程序来防止弹出提示框类的跨站执行?(1)将一些字符转换成HTML实体,过滤关键字(script,alert,javascript等);过滤html事件属性(2)如果参数一定是数字的,获取到之后要将其强制转换成整型,长整形什么的(3)输出前过滤(输出编码[html编码])(4)输入限制(如邮箱,手机等),利用前段js和后端语言双重验证判断格式(5)建立白名单和黑名单,不断添加更新xss filter//下面两个好像与问题无关(6)使用HttpOnly Cookie(6)加密cookie

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值