实验来源:合天网安实验室
实例四、换一个角度,阳光依旧
关键代码:
分析:首先preg_match函数是php的正则表达式匹配函数,一旦从$_GET['name']中匹配到script这个字眼,i参数忽略大小写,die() 函数输出一条消息--errpr,并退出当前脚本,下面的代码就不会再执行,这样的话script标签是不能用的啦,只能用的只能是其他标签,XSS进阶一里面的最后一个例子的img标签试试,应该是可以的,因为可以绕过if语句啊,结果请看下面,可以吧
任务一
根据实例四的代码提示,下面哪种方式能成功: 【单选题】 题目已完成,2
实例五、限制了我的左手,我还有右手
关键代码:
分析:preg_match匹配alert,并忽略大小写,不过改为大写的话,函数也不能行的啦,这样alert函数就不行了吧,还有其他函数啊,如prompt(提示消息框),confirm(确认消息框)啊,具体看图:
confirm就是比alert多了个取消按钮
根据实例五的代码提示,下面哪种方式不能成功: 【单选题】 题目已完成,2
实例六、大胆去思考,小心去求证
关键代码:
分析:首先php将get获取到的值输出出来,那么就是$_GET['name']的值当做字符串复制给js的$a变量了,xss很常说的一个是什么标签闭合什么的,这里能不能语句闭合呢
我们看看源码
整理一下就是:
- <script>
- var $a = "";
- alert("bye!");
- "";
- </script>
当然这样会好理解一点
根据实例六的代码提示,下面哪种方式能成功: 【单选题】 题目已完成,2
1.以上过滤会有哪方面的缺陷?实例四:只过滤了script标签实例五:只过滤alert函数实例六:这个没过滤吧
2.如果你是一个防御者如何修改程序来防止弹出提示框类的跨站执行?(1)将一些字符转换成HTML实体,过滤关键字(script,alert,javascript等);过滤html事件属性(2)如果参数一定是数字的,获取到之后要将其强制转换成整型,长整形什么的(3)输出前过滤(输出编码[html编码])(4)输入限制(如邮箱,手机等),利用前段js和后端语言双重验证判断格式(5)建立白名单和黑名单,不断添加更新xss filter//下面两个好像与问题无关(6)使用HttpOnly Cookie(6)加密cookie