【xss基本介绍】
一、xss是什么
二、xss能做什么
三、xss分类及原理
反射型
存储型
DOM-based XSS
四、练习
反射型(reflected)
题目只给出了一个输入框,尝试输入任意值,发现会直接将输入打印在界面上
尝试输入来弹框:
存储型(stored)
题目有一个留言的功能,尝试在Message框中输入
点击Sign Guestbook来提交留言,提交之后查看网页源码,发现我们的输入没有被过滤,而且被
标签包裹着:

回到首页,点击Clear Guestbook清除所有留言

回到首页,点击Clear Guestbook清除所有留言
之后在Message中输入</div><script>alert(1)</script><div>
点击Sign Guestbook提交留言,之后就会触发存储型xss:
点击确认后关闭弹框,再次查看源码,发现我们写的js代码已经被插入到了页面中:
这样就触发了XSS
DOM型
页面中的js代码如下:
<script>
if (document.location.href.indexOf("default=") >= 0) {var lang = document.location.href.substring(document.location.href.indexOf("default=")+8);document.write("<option value='" + lang + "'>" + decodeURI(lang) + "</option>");document.write("<option value='' disabled='disabled'>----</option>");
}document.write("<option value='English'>English</option>");
document.write("<option value='French'>French</option>");
document.write("<option value='Spanish'>Spanish</option>");
document.write("<option value='German'>German</option>");
</script>
逻辑很简单,在获取url中defalult=之后的值后,将该值插入到<option value=后,而且该值没有经过任何的过滤
我们需要闭合标签,可以用下面的payload:
'></option><script>alert(1);</script><!--
这样的话页面上原来的option标签就会变成下面这样:
<option value=''></option><script>alert(1);</script><!--'>
完整的url如下:
http://172.16.12.128/default='></option><script>alert(1);</script><!--
效果如下: