文章目录
小笔记:
1.请求不一定会传到后端处理,可能直接在前端直接处理完了。
2.CTRL+F 查找页面内容
3.闭合后的单引号是不会在页面上回显出来的
4.先审查元素—>>>查看是否含有点击后执行的函数,然后根据函数的作用进行xss注入。
xss注入(前三种)
反射型(GET):
1.直接可以在输入框进行xss注入(get),一般URL上有直接显示参数名。
可能存在输入长度限制—>BP拦截后直接改请求内容(URL后面的参数里面输入)
反射型(POST):
2.post在URL上不会直接回显参数,尝试输入字符等,观察是否有明显的回显标志,再构建js语句进行闭合注入。
存储型:
3.直接存储在前端的js里面然后直接存储我们要执行的语句。
构建:
<script>alert("哈哈哈")</script>
DOM型
基于文档对象模型
可以通过js来遍历/获取/修改对应的节点,对象,值,处理后的结果能够成为显示页面的一部分。
xss:
审查页面元素我们可以发现一个函数,该函数的作用就是把用户提交的内容输出到标签中,这样的话,就需要闭合标签和引号
xss-x:
与上面的区别就是调用函数的按钮不同,而且URL上有参数显示。
那么我们的注入点就是寻找函数执行按钮的位置,和执行的顺序。
xss五之
盲打:
我们审查元素后发现,为form表单,这个数据被提交到后台
两个payload分别输入两个框中
<script>prompt(document.cookie)</script><script>console.log(document.cookie)</script>
过滤:
部分的语句的输入回显只有一部分,考虑可能是添加了过滤的防护
输入payload 浅试一下是不是这个问题
"<>'on/`() script img href src
发现script之前的都被过滤掉了,考虑的是过滤
payload:
<img src=x onerror=alert(document.cookie)>
果然成功
htmlspecialchars:
我们随便输入内容审查一下元素看看
被放进了href属性里面,我们构建闭合,做一个按钮
payload:
a' οnclick='alert(document.cookie)
点击评论后有弹窗显示,说明注入成功
href输出:
我们随便输入一个payload发现单引号被转码了,无法闭合这个标签了,这个时候我们就要换个方式
href 属性的值可以是任何有效文档的相对或绝对 URL,包括片段标识符和 JavaScript 代码段。如果用户选择了 标签中的内容,那么浏览器会尝试检索并显示 href 属性指定的 URL 所表示的文档,或者执行 JavaScript 表达式、方法和函数的列表。
payload:
javascript:alert(document.cookie)
js输出:
随便输入一个审查一下元素看看有什么变化
发现出现在变量$ms 然后我们构建payload
a';alert(document.cookie)//
几种解决注入的方法
1.防御href属性输出时,我们可以直接强制要以http或者https开头,或者对html进行实体编码