目录
一、反射型XSS(get)
1.进入靶场
2.首先确认一下这个页面是否存在XSS漏洞,在输入点输入一些特殊字符,比如 "<>?666,这个目的主要是看这个输入提交的时候会不会被过滤掉。然后在看会不会被输出,输出的时候有没有被处理
3.提交后,它弹出了who is "<>?666,i don't care!
4.根据刚才的思路,我们看一下页面的源码,ctrl+f 搜素刚才的字符,我们输入的这个字符被输出到了这个HTML p标签的源码里面,并没有进行任何处理
5.如果我们输入我们输入一些正确的javascript代码,它也会被原封不动的返回回来吗??
6.发现我们刚才提交的javascript代码被输入输出之后成功的在浏览器里面执行了,这就是一个反射型的XSS
7. 反射型的XSS实际上这个数据从前端的接口输入到后端接受然后输出,其实后端是对他没有进行存储的,也就是说重新刷新页面,这个代码就没了
二、储存型XSS漏洞
储存型XSS漏洞和反射型形成的原因一样,不同的是存储型XSS下攻击者可以将脚本注入到后台存储起来,构成更加持久的危害,因此存储型XSS也称为"永久型"XSS
1.进入靶场
2.试着留个言,提交。发现这个留言会被存储在页面上,刷新这个界面,留言会一直在这里,也就是说我们提交的这个留言已经被后台存起来了
3.接着按照之前的思路测试一下,是否存在XSS漏洞,同样的输入一些特殊字符,比如:<>"6666, 提交之后可以看到我们输入的东西被当作留言显示出来了
4.接下来看页面源代码,发现我们输入的特殊符号和反射型一样也是没有做任何处理输出
5.接下来输入一个简单的弹窗代码
6.存储型和反射型的区别就是,我们每次刷新的时候,它还是会弹窗因为我们刚才的留言已经存储到了数据库里面了每次访问这个页面的时候都会被执行一次
三、DOM型XSS
1.进入靶场
2.先随便输入一个字符看一下,这个地方出现了一个what do you see?
3.看一下源码,可以看到这里有一段javascript的代码,首先他用dom里面的getElementById这个方法去获取id等于text这么一个标签的值,这个text实际上就是这个input是我们输入的内容,它把我们输入的内容赋值给str,然后又把我们输入的内容通过字符串拼接的方式写到了a标签中的href属性里面
4.当我们在这个标签里面输入一个字符串之后,它就会把这个字符串通过DOM的方法把它拼接到a标签里面,这个a标签会被写到id等于DOM的div标签里面来。
5.把下面这段进行分析,构造一个闭合,中间这个str实际就是我们输入的内容
<a href='"+str+"'>what do you see?</a>
<a href='#' οnclick="alert(111111)">'>what do you see?</a>
单引号中间的这个部分#' οnclick="alert(111111)">这个其实就是我们构造的payload,按照我们的预期,它应该会在我们这个div标签里面通过DOM的方法获取这个输入,然后又把它输出到这个div里面