xss-labs练习level1~13
xss-labs环境搭建
- 在GitHub当中下载靶场环境压缩包https://github.com/do0dl3/xss-labs
level1
- 第一关当中,看见下面有文字提示,显示payload的长度:4
- 然后在url当中的test也是长度4,猜测是这里,我们随便改改这个
- 发现随便输入123456,payload长度就变成6了,所以这里就是payload的位置
- 在这里写入语句
1
<script>alert('123')</script>
- 成功了,点确定就进入level2
level2
- 这里猜测和level1一样,但是改在输入框当中了
- 发现语句在引号当中,这样就不能被执行了
- 需要让它执行,就在前面加
">
,目的是让value参数结束1
"><script>alert('123')</script>
level3
- 看起来和level2差不多
- 输入一样的内容发现不行
- 查看html代码,发现这次value的值是用单引号的
- 把前面改成单引号试试
- 发现还是不行,输入的
<
、>
都被编码成了html字符,这里是使用了htmlspecialchars()
函数 - 所以我们可以尝试其他不用这些符号的语句
1
keyword=' onfocus=javscript:alert('123')%20
- onfocus的作用是当点击输入框的时候会触发指令
'
的作用是闭合value的值%20
是url编码的空格,用于与后面语句隔开
level4
- 看起来又和前面一样,尝试再来一次
- 发现和前面不一样的是,这次是双引号
- 把单引号改成双引号就行
level5
- 用相同的方法发现不行,onfocus中间被奇怪的符号隔开了,用
<script>
也是这样 - 应该是这几个关键词被过滤了,那就有其他的关键词
<a>
是超链接,应该可以用
level6
- 用相同的方法,发现href也被过滤了
- 那尝试一下大小写吧
- 立马就成功了
level7
- 相同的方法,发现中间的很多字符消失了
- 猜测是被识别过滤了
- 尝试双写绕过
level8
- 这题和之前看起来有一点点不一样,有个友情链接的超链接,点了发现是404
- 用查看器一看,发现超链接的目标就是输入框的内容
- 那么就在输入框当中输入语句
- 发现script还是被过滤了,前面用过的都被过滤了
- 所以尝试用编码绕过
- 这里使用Unicode编码,使用Unicode在线转换工具
- 通过unicode编码绕过了过滤机制
level9
- 看起来和上一题一样,输入语句,发现不合法
- 这里一直没搞明白,就去看看源代码
- 在源代码中,看见有一个过滤机制,strpos()用法
- 用于检测是否包含指定字符,这里是检测是否包含
http://
- 我们只需要在背后加上
http://
,并且用//
放前面注释掉它就行1
javascript:alert('1')//http://
level10
- 这一关和前面的都不一样,没有输入框也没有按钮
- 用查看器看,发现多了几个参数
- 尝试一下能不能通过get传递到服务器
1
xss-labs/level10.php?keyword=well done!&t_link=1&t_history=2&t_sort=3
- 发现
t_sort
的参数发生了变化,变成我们设定的数字 - 我们就可以在这里插入我们的语句
- 发现尖括号又被过滤了,那么只能使用能在尖括号当中的语句了
- 如果是用上面用过的onfocus的话,没有输入框,难以触发
- 所以我们应该需要将内容显现出来,然后添加触发按钮
1
t_sort=" type="text" onclick="alert('1')
level11
- 和上题一样,通过查看器发现多了一个参数
ref
猜测是referer,再看后面的值,基本确定就是referer- 所以我们在传递referer当中插入我们的代码就行
1
" type="text" onclick="alert('1')
level12
- 同样发现有一个特殊的参数
- 通过t_ua这个名字,以及后面的参数,猜测应该是user agent
level13
- cook猜测是cookie信息
1
user=" type="text" onclick="alert('1')
- 前面需要加
user=
,表示cookie信息当中的用户
评论