文章目录
xss-labs通关攻略教程(level1~level 10)
level 11——Referer信息
- 在
url
处提交测试代码并查看源码
javascript:alert('xss')
- 查看服务器端源码
在服务器端还将请求头中的referer
头的值赋给了str11
这个变量,再将变量值中的<
和>
删除之后就会插入到t_ref
这个标签的value
属性值中。而上一关的t_sort
标签虽然也能接收并显示参数值,但是这个参数值是要用htmlspecialchars()
函数处理的。 - 使用
burp
抓包,没有referer
这个数据,我们添加
referer:111
查看响应位置。
4. 修改referer
处的数据为
referer:"type="text" οnclick="alert('xss')
5. 放包点击输入框,即可出现xss
的弹窗。
level 12——user-agent信息
- 在
url
处输入测试语句javascript:alert('xss')
,查看网页源码 - 我们查看
t_ua
标签中value
属性的值比较眼熟,使用burp
抓包查看,发现为user-agent
字段中的值,于是考虑在此处构造合法的payload
。
User-Agent: "type="text" οnclick="alert('xss')
4. 放包后,点击输入框,即可看到xss
的弹窗。
level 13——Cookie信息
- 在
url
处输入测试语句javascript:alert('xss')
,并查看网页源码 - 尝试上一关相同的思路,抓包看一看
- 发现
t_cook
标签中value
属性的值正好为cookie
的信息,于是考虑在cookie
处构造合法的payload
。
Cookie: user="type="text" οnclick="alert('xss')
4. 放包后,点击输入框即可得到xss
的弹窗。
level 14——exif xss
- 来到十四关后发现网页一直在响应,最终得到无法响应的界面
level 15——ng-include属性
- 抓包也得不到有用信息,我们查看网页源码
发现最后一行有
class="ng-include:"
的语句,ng-include
指令一般用于包含外部的HTML
文件,ng-include
属性的值可以是一个表达式,返回一个文件名,但是默认情况下,包含的文件需要包含在同一个域名下。很有可能这个指令就是突破口,所以我们可以包含一个有漏洞的页面
特别值得注意的几点如下:
ng-include
,如果单纯指定地址,必须要加引号ng-include
,加载外部html
,script
标签中的内容不执行ng-include
,加载外部html
中含有style
标签样式可以识别
- 查看你服务器端源码,我们包含的
HTML
文件注意会被转义,尖括号会被过滤。 - 构造合法的payload
?src='level1.php?name=<img src=1 οnerrοr=alert(1)>'
level 16——空格绕过
-
查看服务器端的源码
发现空格、反斜杠、script均被替换为空格,因此考虑用%0A
绕过空格 -
构造合法的
payload
?keyword=<a%0Ahref='javas%0Acript:alert("xss")'>xss
4. 点击xss
链接即可得到xss
的弹窗
level 17——合二为一
-
很奇怪,中间有一个flash不能正常显示,查看网页源码
-
查看服务器端的代码
我们提交的参数在<embed>
标签的src
属性中,这一关有两个参数:arg01
、arg02
,当我们发送的时候,发现他们是会互相拼接起来的,并且做了尖括号过滤,那么我们可以加入一个属性进去,生成恶意代码。<embed>
标签就是引入一个swf
文件【SWF
格式是动画软件Flash
的专用格式】到浏览器端,并且它的src
属性值不需要闭合
- 构造一个恶意代码
?arg01= onmousemove&arg02=javascript:alert(/xss/)
?arg01=a&arg02= onmousemove="alert(/xss/)"
?arg01= onclick&arg02=alert('xss') //每一种方法的空格都很重要
onmouseover
:(表示当鼠标移动到该标签上时就会触发执行某项动作)。
正常来说,执行正确是在在该swf
文件区域点击会出现弹窗,由于我的电脑配置问题,可能swf
文件显示不出来。
level 18
与上一关方法相同
level 19&level 20
这两关涉及flash xss
常见的可触发xss的危险函数有:
getURL navigateToURL ExternalInterface.call htmlText loadMovie
等
要想知道这一关的是不是属于flash xss
,只需要对引用的swf
文件,进行反编译然后进行源码分析,反编译的工具是jpexs-decompiler
,项目地址:https://github.com/jindrapetrik/jpexs-decompiler