第一关:
- 直接改name=script>alert(1)
第二关:
- htmlspecialchares()函数
第三关:
- 对尖括号进行过滤了,可以通过标签的一些特殊事件来执行js代码,
- 写入语句:level3.php?keyword=’onfocus=javascript:alert(1) >
- 成功注入
第四关:
- onclick=”alert(1)或者 “ onmouseover=”alert(1)
第五关:
- 用同样方法时发现,onclick被添加下划线干扰了。
- 借助超链接执行js代码
- href 属性规定链接的目标: 先把前面的值閉合掉
1 | "> <a href='javascript:alert(1)'> |
第六关:
- 同上,大小写绕过
第七关:
- 只有一次过滤,替换为空
- 可以尝试javascrscriptipt 这种方法绕过
第八关:
- xxxx编码绕过
第九关:
- 检测链接里有没有http//,可以在跨站语句后添加http://,然后用//注释掉将网址注释掉
第十关:
- hidden,隐藏属性值;type=‘text’ (作用是让它显示出来)onclick=‘alert(1)’
第十一关:
- http_referer
- 抓包,添加 referer:111,发送到虚拟请求里,查看页面返回,发现111被带入到,value里了,发现注入点,
- 写入语句:referer:”type=”text” onclick=alert(1)
- 放包到浏览器,点击搜索框,注入成功
第十二关
- 接收 user_agent
- 查看页面源码,发现tref值后面有类似user_agent的值,抓包观察,发现值一样,找到注入点,
- 写入语句:”type=”text” onclick=”alert(1)
- 放包到浏览器,点击搜索框,注入成功
- 如何判断有无xss漏洞:地址或数据包有无页面上显示的数据
第十三关
- 查看页面源码,发现t_cook有可疑值,抓包发现,在cookie这一栏看到相应值,找到注入点,
- 写入语句:”type=”text” onclick=alert(1),模拟提交,发现注入成功,发到浏览器,点击搜索框,注入成功
第十五关
- src参数无法产生xss的
- ng-app指令,初始化一个angularJSuing应用程序
- ng-include指令
1 | 用于包含外部的html文件,包含的内容将作为指定元素的子节点,ng-include属性的值可以是一个表达式,返回一个文件名,默认情况下包含的文件需要包含在同一个域名下。 |
第十六关
改一下参数值,发现被带入到
标签中,用最基本的代码测试,发现关键字script、/、空格,都被编码成空格了,猜想源代码是过滤了这些关键字符,需要用一个不需要闭合的标签,比如 上一关用到的 写入语句:<img%0asrc=”a”onerror=alert(1)>
因为源代码里把空格也过滤了,但img和src中要有空格,可以利用 回车的url编码格式的**%0a**绕过。 成功弹窗
第十七关
改下参数值,发现被带入到
页面有一个类似图片的东西,所以可以考虑通过事件来触发,因为src属性是不需要闭合的,只需要一个空格就可以,所以在onclick=alert(”xss”)前加一个空格就好
onclick事件
onclick=alert(”xss”)
onmouseover (当鼠标移动到该标签上会触发)
第十八关
同上
第十九关
这一关涉及到 flash xss的攻击手段,flash产生的xss问题主要有两种方式:
- 加载第三方资源
- 与javascript通信引发xss
常见的可触发xss的危险函数主要有
- geturl 、navigatetourl、Externalinterface.call、htmltext、loadMovie等
xss跨站之waf绕过及安全修复
onerror事件:当视频的媒体数据加载期间发生错误时执行javascfript
<img src=”pic.gif” οnerrοr=”javascript:this.src=’/noPic.gif’;” alt=”pic” />
因为csdn做了简单的转义,它会将注入的标签,去掉闭合性,也就是会把我们注入的内容理解为:
<img src=”pic.gif” οnerrοr=”javascript:this.src=’/noPic.gif’;” alt=”pic”>
这样,注入的标签就失去了闭合性,对一些普通的攻击就进行了防御,但是onerroe事件是专门针对js出错的,所以,标签闭合性刚好触发了,所以会被执行,执行之后将img标签的scr属性替换成xss注入语句,将注入的地址,弄成不能访问的地址,这样就反复的触发onerror事件,最终导致浏览器堆栈溢出