XSSlabs
前言
做笔记 记录
level1
发现url处存在传参
?name=test
且页面有回显 test
说明应该可以控制输入,然后输出到页面中
payload:
`
结果如下,没有对输入的参数进行过滤 xss反射成功
level2
(1)如下图所示:测试123 发现搜索框 会将输入的参数输出在页面中
(2)直接输入<script>alert(123)</script>
xss语句 看是否存在过滤
如图所示 没有弹窗
(3)ctrl + u 查看页面源代码发现
代码中应该将输入的参数 使用htmlspecialchars()函数进行了过滤。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/34042c3953d7e3d6d14e4219b7c80485.png)
(4)下方 标签中也将输入的参数 输出了出来 尝试 闭合input 标签 进行xss注入
payload:
"><script>alert(123)</script>
注入成功
level3
解题知识:
onmouseover 属性可使用于所有 HTML 元素,除了: <base>, <bdo>, <br>, <head>, <html>, <iframe>, <meta>, <param>, <script>, <style>, 和 <title>.
https://www.runoob.com/jsref/event-onmouseover.html
(1)依旧直接插入 发现未弹窗 ctrl+u 查看页面源码
发现 web应用在两处标签中输出参数时都经过了html实体编码
(2) 利用不需要 < >的xss语句
οnmοuseοver=‘javascript:alert(1)
还需要 闭合 value=’ ’ 的前后单引号
payload
'οnmοuseοver='javascript:alert(1)
level4
(1)输入<script>alert(123)</script>
发现一处 将< > 转码 输出
另一处 将< > 删掉 输出
(2)可以用上一关的payload 不需要 <>
payload
"οnmοuseοver="javascript:alert(1)
level5
知识:
href 标签的 href 属性用于指定超链接目标的 URL。
如果 href 属性没有被指定链接,<a> 标签将不是一个链接。
(1)输入<script>alert(123)</script>
发现一处使用 htmlspecialchars()函数将<>进行了html实体编码输出
另一处 将 <script>
中加入了 _
(2)尝试 "οnmοuseοver="javascript:alert(1)
同样转化为 "o_nmouseover="javascript:alert(1)
(3) xss
闭合input
payload `
"> xss `
level6
(1) 插入 普通弹窗语句
页面源码与上关一样
(2)尝试上一关的 标签 超链接 `"> xss
报错
(3)尝试
大小写混写
payload
"> xss
level7
(1)同上
1.<> 编码
2.script被替换为空
(2)因为 上边 还是得利用input标签 尝试 "οnmοuseοver="java:alert(1)
发现 on 和script 被替换为空 利用大小写 混用 和双写发现 双写可绕过
payload
"οnmοuseοver="java:alert(1)
leve8
(1) 添加 script alert 代码
插入<a href=> 超链接中
(2)可以直接 加 javascript:alert(123) 尝试弹窗
因为script 会被插入 _
(3)也可以对 javascript:alert(123) 进行 unicode编码
payload
javascript:alert(123)
level9
(1) 插入 script alert 弹窗测试
如下图所示
一处输出点 被转义
一处提示链接不合法
因为是网页跳转的超链接
猜测会验证前边是否有http://
(2)在1上+ http:// 测试
发现又被加入 _ 破坏 语义
(3) 尝试再上关 payload 基础上 加入http://
javascript:alert(123) // http://
注意需要在最后加入// 注释掉http://
level10
(1)
查看源码 发现三个隐藏表单
思路: 突破标签 尝试使其 不为隐藏标签
(2) 构造反射型 url参数
http://localhost/xss-labs/level10.php?t_link=&t_link=test" type=“text&t_history=test” type=“hidden&t_sort=test” type="text
发现 出现一处文本框 为t_sort
payload
http://localhost/xss-labs/level10.php?t_link=&t_sort= " type=“text” οnclick="alert(123)
level11
思路同上
经过测试发现 t_sort 可以插入值,但是" 会被编码
t_ref猜测是否为 referer的缩写
修改包加入
payload
referer: " type=“test” οnclick="alert(‘xss’)
重放包
level12
查看源码
发现http请求头 user-agent
同上过关
level13
查看源码发现cookie
同上
level14
level15
总结
xss测试步骤:
1.检测输入的变量,确认每个web页面中用户可以自定义的变量,包括:http 请求头, post 数据。
2.在输入点输入poc ,ctrl+u 搜索 查看 输出点位置 标签。 看能否突破标签。
若存在过滤,看能否绕过过滤。