DVWA-XSS(DOM)

Low

后端没有代码,点击select按钮动作是前端的JS代码进行处理的

javascript 复制代码
function addEventListeners() {
	var source_button = document.getElementById ("source_button");

	if (source_button) {
		source_button.addEventListener("click", function() {
			var url=source_button.dataset.sourceUrl;
			popUp (url);
		});
	}

	var help_button = document.getElementById ("help_button");

	if (help_button) {
		help_button.addEventListener("click", function() {
			var url=help_button.dataset.helpUrl;
			popUp (url);
		});
	}
}

addEventListeners();

我们点击select之后,在URL后面加入<script>alert(123)</script>后,观察页面源码发现payload被插入到了前端界面中执行

Medium

观察后端代码进行了<script和大小写过滤,这里考虑闭合绕过

php 复制代码
<?php

// Is there any input?
if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) {
	$default = $_GET['default'];
	
	# Do not allow script tags
	if (stripos ($default, "<script") !== false) {
		header ("location: ?default=English");
		exit;
	}
}

?>

将payload改为</option></select><img src = 1 onerror = alert('123')>实现闭合

High

后端进行白名单过滤

php 复制代码
<?php

// Is there any input?
if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) {

	# White list the allowable languages
	switch ($_GET['default']) {
		case "French":
		case "English":
		case "German":
		case "Spanish":
			# ok
			break;
		default:
			header ("location: ?default=English");
			exit;
	}
}

?>

但是可以通过注释符#绕过,注释符后面的内容不会发送到服务器

javascript 复制代码
English#<script>alert('123')</script>

Impossible

后端没有代码,观察前端代码

impossible level没有设置解码

按之前Low level注入的话,结果如下

防御

2.过滤输入的字符,例如 " ' "," " ","<",">" 等非法字符;

3.对输入到页面的数据进行编码

相关推荐
全宝1 分钟前
🔢前端解决浮点数运算精度丢失的问题
前端·javascript
江城开朗的豌豆8 分钟前
JavaScript篇:偷懒也有理!事件代理让我少写一半代码
前端·javascript·面试
云浪23 分钟前
掌握 CSS 倾斜函数
前端·css
ai产品老杨30 分钟前
实现自动化管理、智能控制、运行服务的智慧能源开源了。
前端·javascript·vue.js·前端框架·ecmascript
唐诗31 分钟前
优化 Nextjs 开发的个人博客首页,秒开!
前端·next.js
飞川撸码33 分钟前
web vue 项目 Docker化部署
前端·vue.js·docker·运维开发
默默无闻的白夜35 分钟前
【Vue】初学Vue(setup函数,数据响应式, 脚手架 )
前端·javascript·vue.js
萌萌哒草头将军40 分钟前
⚡⚡⚡Rstack 家族即将迎来新成员 Rstest🚀🚀🚀
前端·javascript·vue.js
江城开朗的豌豆1 小时前
Proxy:JavaScript中的'变形金刚',让你的对象为所欲为!
前端·javascript·面试
江城开朗的豌豆1 小时前
JavaScript中的instanceof:你的代码真的认识'自家孩子'吗?
前端·javascript·面试