目录
1.反射型XSS(get)
获取cookie
'><script>alert(document.cookie)</script>
根据提示先输入一个kobe试试,输入框有长度限制先改个大的(多长的脚本也不怕了)
输入<script>alert("xss")</script>有弹窗出现存在xss漏洞
分析代码:
- isset检测变量submit是否已设置并且非 NULL,即判断用户是否点击了submit按钮。
- 得到message参数,判断是否非空。若为空,输出提示。若非空且为kobe,输出上面截图的图片及内容。
- 否则,拼接到html变量,并输出html
2.反射型XSS(post)
作者让干啥咱干啥,先登录
登录成功了
输入个1,下面并回显猜测和上个例子代码一样
输入<script>alert("xss")</script>有弹窗出现存在xss漏洞
哦?好像跑题了
这里是post
看代码
和之前相比,添加了登录,用来设置Cookie,不过仍然是进行拼接,没有任何过滤。
3.存储型xss
先输个1看看,
直接上payload <script>alert("xss")</script>
这次我们回想存储型的原理:是存进数据库的并且每次加载这个留言板就会执行这个恶意的payload
废话不多说看效果
再次访问
DOM型XSS
DOM可以理解为访问HTML的标准接口,DOM里面会把我们的HTML分成一个DOM树
我们可以以这棵树为入口,通过DOM的某些方法对树进行操作,比如对标签的添加、改变和删除等等, DOM这个东西相当于在前端提供了一个通过JS去对HTML进行操作的接口。
看代码
查看前端代码,发现输入的内容会被拼接到,对应标签中,存在dom性的xss,我们只需要精心构造payload,闭合前面就行。
扩展:
onmouseover事件:指鼠标移动都某个指点的HTML标签上,会出现什么效果。
onmouseout事件:指鼠标移出某个指点的HTML标签后,会出现什么效果。
' onmouseover = "alert('xss')"
DOM型xss-x
和上面那个没什么区别
直接payload ' onmouseover = "alert('xss')"
代码分析
- 提交表单后,得到text,添加一个a链接,href属性为#,点击运行domxss函数。
- domxss函数将text通过正则进行一个简单过滤,然后和上一个一样。
xss之盲打
盲打就是随便写
不过这个要登入后台才能看
属于存储型的一种吧
看后台有什么惊喜
出现弹窗
XSS之过滤
直接上payload
'><script>alert("xss")</script>
<SCRIPT>alert('XSS')</SCRIPT>
好像少了点什么东西那就
分析代码
注释写的很清楚,使用正则,过滤掉<script,我们可以使用html标签进行注入。
同时,有个小彩蛋,输入yes的话就不会显示你的输入了,而是固定的文本——那就去人民广场一个人坐一会儿吧!
换一个payload
成功的绕过过滤但是没成功啊,因为是点击事件,那就再换一个
换成大写
<SCRIPT>alert('XSS')</SCRIPT>
成功绕过
xss之htmlspecialchars
直接插入payload
哦?不行
先输几个符号检测一下,并看看源代码那些符号被编译了
发现'没被处理htmlspecialchars默认不对'处理
'οnclick='alert(123)'(第一个单引号闭合前面herf那个)
最后看一下代码你就会很清楚
XSS之href
还是老规矩先是一顿输入符号
可以看到在href中
输入一些内容,我们发现他被写在了a标签里,关于a标签有一个特性:
输出在a标签的href属性里面,可以使用javascript协议来执行js,那么根据这个来构造payload
XSS-js输出
还是老规矩先是一顿输入符号
输入一堆符号,观察源代码,发现我们的输入被放在了js中,那么我们可以直接通过闭合$ms=''"<>666';来构造payload
' ;alert(111) ;'
看源代码就明白了