赞
踩
1.反射型XSS(GET)(只会把XSS保存浏览器上,只有自己能看到,刷新页面就会消失只能用一次)
直接输入标签型XSS试试
<script>alert(1)</script>
输入到一半发现输入不了了,有长度限制
按F12,看一下前端代码
发现有长度限制,我们可以直接双击,把这个值改大就好了
继续我们的修改,点击提交
弹框了,说明存在反射型XSS
2. 反射型XSS(POST)(只会把XSS保存浏览器上,只有自己能看到,刷新页面就会消失只能用一次)
POST的XSS需要先登录一下
先用burp抓个包,然后爆破一下账号密码
账号密码爆破的结果是
账号admin 密码123456
登陆一下
发现出现一个和GET反射型XSS一样的框
尝试输入
<script>alert(1)</script>
提交
3. 储存型XSS(可以把XSS保存在服务器中任何人 访问都可以看到,形成持久伤害)
同样的先用标签型XSS试一试
<script>alert(1)</script>
网站有弹框,刷新网站,弹框还在
4. DOM型XSS(XSS在前端执行,不与数据库交互)
随便写点东西,确定一下输出点的位置
发现有两个输出点,这段JS的意思是 把我们输的东西赋值给了变量str,所以href里面就是我们输的东西,是第一个输出点,第二个是明文输出的
先看第一个输出点,第一个输出点在<script>标签里面,所以可以尝试一下事件型输出
' οnclick=alert(1) >\\
'是为了闭合href=后面的' >是为了闭合a标签的> \\是为了注释掉后面的
成功弹窗
再看第二个输出点,没有<script>标签,只能使用标签型的
没有反应,所以第二个输出点不存在XSS
5. DOM 型XSS-x
和之前一样,随便写点伤心往事
点击右边发现URL编码后面也多了一些伤心往事
看下源码
window.location.search
该属性获取页面 URL 地址
decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码
var xss = txss.replace(/\+/g,' ');
将+
删除,这里应该是过滤经过url
编码过的空格
所以这个和上题一样也是在href里面
' οnclick=alert(1) >\\
6. XSS盲打
盲打的意思是在前端看不到任何东西,这里我们借助一下第三方的XSS平台
把第三方XSS平台生成的XSS放到两个框框里面
提交之后我们登陆一下后台(后台地址在提示里面,账号密码在登录地址的提示里面)
打开XSS平台的项目管理就拿到了登录的cookie
7. XSS过滤
首先老样子先尝试一下
<script>alert(1)</script>
发现没有弹窗,被过滤掉了
随机尝试一些东西,发现只过滤小写的script
所以我们可以大小掺杂
<ScriPt>alert(1)</sCrIpT>
成功弹框
8. xss之htmlspecialchars
htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。
输入<script>alert(66666)</script>发现我们的输入被HTML实体编码了
标签型的肯定行不通了,因为在a标签里面我们尝试着用事件型的去做一下
' οnclick=alert(666) //
出现弹窗
9. xss之href输出
一般在href中用伪协议
成功弹窗
10. xss之js输出
首先随机输入一些数字,看看源码
发现我们输入的数据被输入在了变量ms里面,变量ms在script标签里面
所以我们尝试一下闭合script标签,然后插入我们的XSS
</script><script>alert(666)//
前面那个</script>是为了闭合前端代码的<script>,后面的<script>是为了和后面的</script>组成新的标签
成功弹窗
XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
输出转义:根据输出点的位置对输出到前端的内容进行适当转义;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。