| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> DVWA之DOM XSS(DOM型跨站脚本攻击)代码审计 -> 正文阅读 |
|
[JavaScript知识库]DVWA之DOM XSS(DOM型跨站脚本攻击)代码审计 |
目录 Lowphp源码包含的过滤代码如下 从源代码可以看出,这里low级别的代码没有任何的保护性措施!? html代码如下。页面本意是叫我们选择默认的语言,但是对default参数值没有进行任何的过滤,直接插入到option标签中。 因为这段JS代码是本地执行的,获取本地输入的URL栏上的default参数再直接嵌入到option标签中的,因而可以直接往default参数注入XSS payload即可 1. 利用尖括号构造弹窗
?我们查看源代码,可以看到,我们的脚本作为option标签内容插入option中,所以执行 如下为option标签的样式结构?
?2. 利用伪协议 若要尝试使用其他XSS payload,如img、svg等标签,因为select标签内只允许内嵌option标签,而option标签中能内嵌script标签但不能内嵌img等标签,因此需要在注入时先闭合option和select标签从而使注入的标签逃逸出来执行XSS:
3. 利用html事件
Medium过滤代码如下。可见对输入的"<script"这个关键字进行了过滤 ?stripos() 函数查找字符串在另一字符串中第一次出现的位置(不区分大小写) stripos(string,find,start)
所以这里这届嵌入<script>标签是不行,不过我们可以利用上面的伪协议和html事件进行弹窗,payload一样就不再演示 High源码如下,按照之前的方法肯定是不行的,因为白名单直接写死了 看下帮助信息
大概意思就是,需要找一种方法在本地运行你的JS代码而无需经过服务器端的处理。这里提供的一种方法就是,应用#号,URL栏的#号之后的内容并不会发送至服务器端,JS应用该符号实现在页面创建加载过程中定向到指定的页面内容上。 所以运行这种方法,我们构建弹窗 1. 构造script标签
回车后然后刷新浏览器,弹窗成功 ?我们追踪一下代码流看下,证明了#后面的内容并未发送到服务器中 2. 利用伪协议?
同样进行刷新浏览器 ?3. 利用html事件
Impossibe?这里服务端没有进行任何过滤 查看help怎么说: The contents taken from the URL are encoded by default by most browsers which prevents any injected JavaScript from being executed. 大致就是,大多数浏览器默认都对从URL中获取的内容进行编码,以防止JS代码注入执行。 回到xss dom的index.php中可以看到,对于impossible级别来说,在JS代码document.write()中调用的decodeURI()是个空函数,即并不会对URL编码过的内容再进行URL解码,从而杜绝了DOM型XSS: 测试一下,发现确实没有进行URL解码 之前的三关都是一种解码的状态如下 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 13:12:06- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |