一、XSS攻击
(一)、反射性型XSS(GET)
我们先输入’”<>,1234 用于测试我们的输入会不会被过滤掉,因为有特殊字符。
然后看一下源码。
这里可以看到我们的输入被直接显示在了P标签里。
然后我们输入我们的JS代码试试
<script>alert("123")</script>
发现显示对输入长度有限制,我们F12更改一下继续输入。
我们查看源码可以发现,我们输入的payload嵌入了到了 p 标签里面。
这又是正确的JS代码,所以被浏览器正确执行了。
(二)、反射性型XSS(POST)
首先登陆进来
因为是POST,所以参数不会体现在URL里,这里我们使用Burp抓包看。
也是一样,先输入特殊字符防过滤。
没有被过滤,我们可以POST传参试试。
<script>alert("document.cookie")</script>
OK
(三)、存储型XSS
跟之前一样,直接测试语句。
<script>alert("123")</script>
(四)、DOM型XSS
首先弹窗试试。
看源码,发现onclick后会执行函数 domxss() ,其作用是读取input的值并将其拼接到新创建的link节点中。
(五)、DOM型XSS-x
一样先试一下过滤
可以发现'"<>都被过滤了。
同理还是看源码。
构造payload:
'><img src="#" onmouseover="alert('xss')">
(六)、XSS之盲打
试一下
没有弹窗,根据提示我们登入后台。
已经在后台弹窗了
(七)、XSS之过滤
由题目可以看出来,应该是有过滤的,那我们直接试试。
果然被过滤了,换一种写法试试。
<img src=0 onerror="alert(document.cookie)">
成功弹窗了。
(八)、xss之htmlspecialchars
先随便输入,<script>alert("123")</script>
首先了解了一下htmlspecialchars
输入123’ ”<>&,查看源码。
我们可以发现对单引号没有过滤能力,其他的皆可以变成实体编码
于是我们可以构造这样一个payload
' onclick = 'alert(123)'
第一个单引号是闭合前面的
(九)、xss之href输出
测试一下
没有反应,看一下源码。
审查返回的元素发现所有字符都被转化为HTML实体了,包括单引号。
但由于输入的url拼接在 <a href='输入的内容'>属性中,可以使用javascript语法:
Javascript:alert("123")
(十)、xss之js输出
测试输入 '"<>,1234
没有回显
输入1
可能是被过滤了,我们挨个试一下。
发现输入'"的时候被过滤了,我们输入<123>试试,看看源码
输入被拼接到了脚本中,尝试闭合语句然后添加自己的语句上去:
';alert(document.cookie)并没有任何回显,我们在看看源码,原来忘记注释掉后面的了所以我们再构造payload:';alert(document.cookie)//成功弹窗
二、CSRF攻击
来源:https://www.cnblogs.com/p201721240019/p/12035827.html