我想使用一种输入表单来使用HTML和JavaScript在本地演示XSS。问题是,通过URL传递参数并将其获取到JavaScript代码中之后,它不会执行。我知道它不会执行,因为我没有重新加载DOM。
我应该怎么做?
目前,我的代码如下所示:
<!DOCTYPE html>
<html>
<head>
<title>XSS</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<form method="GET" action="test.html">
<input type="text" name="search" id="search">
<input type="submit" value="Senden">
</form>
</body>
</html>
<!doctype html>
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<input type="text" name="search" id="search">
<a href="start.html">Start</a>
</body>
<script>
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
var x = getParameterByName('search');
$('input[type="text"]').val(x);
</script>
</html>
提前致谢。
最佳答案
要演示XSS漏洞,您需要评估URL中的字符串,而不是将其设置为输入
尝试用<script>alert('test')</script>
进行测试
<!doctype html>
<html>
<head>
<script type="text/javascript" src="https://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<input type="text" name="search" id="search">
<a href="start.html">Start</a>
<script>
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
$(function(){
var x = getParameterByName('search');
$('input[type="text"]').after(x);//or eval(x);
});
</script>
</body>
</html>
关于javascript - 输入表格以演示XSS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39468635/