反射型、存储型、DOM型XSS特点和区别
区别:
反射型XSS:攻击者构造一个参数包含恶意js代码的URL,诱骗用户点击,用户访问后向服务器发送请求,服务器响应包含恶意代码的页面,并在客户端执行。
存储型XSS:攻击者通过网页的留言、评论等交互处将恶意代码注入到服务器数据库中,用户请求后响应包含恶意代码的页面。
DOM型XSS:攻击者构造一个参数包含恶意js代码的URL,诱骗用户点击,用户访问后向服务器发送请求,服务器的响应并不包含恶意代码,而是URL中的代码直接在本地浏览器由js执行。
特点:
反射型:交互的数据一般不会被存在数据库中,一次性,所见即所得,一般出现在查询类页面等。
存储型:交互的数据会被存在数据库中,永久性存储,一般出现在留言板,注册等页面。
DOM型:不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的是时候产生的问题,大部分属于反射型。
挑战xss打靶
level1
将<script>alert('1')</script>替换为test的值
level2
尝试level1的办法无法解决
右击输入框并点击检查,发现输入被转义为字符串。
输入"><script>alert('1')</script>,完成注入
level3
尝试level2的办法无法解决
右击输入框点击检查
双引号和“>“被实义化了,在input标签内进行XSS并输入'οnclick='alert(1)。
level4
尝试输入<script>alert('1')</script>
查看源码
将单引号改为双引号,输入"οnclick="alert(1)
level5
输入123
查看源码
alert加了双引号变成字符串了onclick也被改了,尝试使用用a标签搭配javascript:alert,输入"><a href="javascript:alert(1)">