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信息当中的用户
评论
