从反射型XSS开始

演示:

先输入一些比较特殊的字符(这里指会出现HTML或者JS语法中的字符),比如双引号“”,尖括号<>等,测试这些字符是否会被过滤

图片

有回显,查看页面源码

图片

很明显没有被过滤都被输出在P标签里,说明这里可能出现XSS漏洞,可以尝试一些payload

图片

输入到一半结果不能输了,结果是因为他在前端代码里限制了最大字符长度(其实根本没鸟用)

图片

修改到一定数值,继续输入我们的payload并提交

图片

图片

Tips:alert可以用confirm和prompt来替代

确实存在反射型XSS漏洞

由此可见,从前端进行输入数据,到后端接收数据,其实后端是没有对数据进行存储的,重新刷新页面就不会出现以上弹窗了

源码分析:

图片

源码是比较简单的,先判断传入的数据是否为空,如果不为kobe,就把输入的数据原封不动的输出到前端,这个过程后端没有对数据进行任何操作

利用场景:

上述演示是基于GET方式传入的,所以说我们传入的数据会出现在URL上,期间浏览器会对一些字符进行url编码,所以我们可以直接把含有payload的url发给别人,就能触发XSS,这个还算是好利用的

图片

这里的payload是比较简单的,只是为了验证漏洞存在,当然期间的代码,是可以由我们更改,比如说获取cookie之类的

GET方式的XSS漏洞更加容易被利用,一般利用的方式是将带有跨站脚本的Url伪装后发送给目标,而POST方式由于是以表单方式提交,无法直接使用Url方式进行攻击

PS:GET是以Url方式提交数据,POST是以表单方式在请求体里面提交