• XSS-labs1-20关通过手册


    XSSlabs1-20关通关手册

    第一关level-1(无任何过滤)

    进入靶场第一关,查看页面给我们反馈的信息内容

    image-20230920170926779

    查看网页源码:

    image-20230920171020065

    关卡源码:

    <!DOCTYPE html><!--STATUS OK--><html>
    <head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <script>
    window.alert = function()  
    {     
    confirm("完成的不错!");
     window.location.href="level2.php?keyword=test"; 
    }
    </script>
    <title>欢迎来到level1</title>
    </head>
    <body>
    <h1 align=center>欢迎来到level1</h1>
    <?php 
    ini_set("display_errors", 0);
    $str = $_GET["name"];
    echo "

    欢迎用户".$str."

    "
    ; ?> <center><img src=level1.png></center> <?php echo "

    payload的长度:".strlen($str)."

    "
    ; ?> </body> </html>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    观察发现没有任何的过滤:

    直接插入js代码

    payload:
    name=<script>alert('XSS')</script>
    
    • 1
    • 2

    image-20230920171445351

    第二关level-2(闭合标签)

    使用我们之前插入js代码也就是使用上一关的js代码进行测试,看是否弹窗,发现没有弹窗

    image-20230920171659803

    检测页面元素:

    代码确实已经写入,但是没有被执行

    image-20230920171600272

    查看页面源码:

    发现<>被HTML实体编码了,成了实体字符。但是我们发现获取到的属性值是没有经过转码的,我们要想办法在属性被获取到的时候绕过过滤函数

    image-20230920171625513

    我们构造语句,闭合input标签,再进行攻击。

    payload:
    keyword=">