我想使用一种输入表单来使用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/

10-12 14:37