码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • xss跨站脚本(cross-site scripting)


    本质上是用户输入 js , html 代码,提交至服务器(可不经过),前端和后端均未对用户的输入和输出进
    行合理的过滤和限制,导致恶意 js 代码以及 html 代码被注入到网页中
    危害:钓鱼欺骗、获取会话、会话劫持、网页蠕虫病毒等;
    即前端代码注入,代码注入类
    代码注入的本质:把用户的输入当作代码执行;
    基本流程
    如何引用 js
    1 、 script 标签
    < script > console . log () < /script>
    2 、 script 标签中的 src 属性
    < script src = "http://a.com/j.js" >< /script>
    3 、事件( on ),(鼠标键盘窗口)
    < input onclick = console . log () >
    < img src = x onerror = console . log () >
    4 、 a 标签 href 属性构造伪协议
    < a href = javascript : console . log () > baidu < /a>
    常见构造标签:
    src = x onerror = alert(1)>
    onload = alert(1)>
    onmouseover = "console.log(5)" >
    href = "javascript:alert(1)" >
    type = text onclick = alert(1)>
    等等
    xss 分类
    1 、反射型
    xss 恶意代码经过服务器但不存储于服务器,一次性
    2 、存储型
    xss 恶意代码经过服务器且存储于服务器(文件,数据库)
    3 、 dom 型(也算反射型的一种)
    xss 恶意代码不经过服务器,无需和服务器交互,发生在客户端处理数据时
    xss 语句及过滤
    1 、无尖括号,可选择用事件触发 js 代码
    2 、无法使用 script 标签及 js 事件的情况下,可选择用 a 标签引入伪协议,例:
    href = "javascript:alert(1)" > random
    3 、某些属性被替换,可选择大小写绕过限制
    例:
    "> hREf = "javascript:alert(1)" > asdf
    用大小写穿插的方式替换 href
    4 、存在过滤属性名、标签名的情况,如果过滤不严谨可尝试双写;
    "> hrhrefef = "javascrscriptipt:alert(1)" > asdf
    5 、可尝试使用实体编码替换 xss 语句中值的部分,
    例:
    href = "javascript:alert(1)" > 友情链接
    可替换 href 后的部分,参数无法替换
    6 、观察页面,有些输入框是隐藏属性
    7 、除了正常的 GET 、 POST 请求外, http 请求头,有时也可以构造 xss
    8 、 ng-include, ①需要指定的是同域名下的图片或文件②搭配事件或其他 js 触发方式
    9 、空格被替换,可选择类似 sql 注入中的替换方法, %0a 、 %0d 、 %09 、 / 等
    10 、反单引号替换括号、中括号
    11 、 img 、 input 等自闭和标签无需闭合,结尾尖括号也可省略,属性后记得加空格
    12 、引入恶意 js 时,可选用邮箱格式,用户名 @ 网址,例: baidu.com@qq.com , 等价于baidu.co 作为用户名去访问qq
    13 、正则不严谨时可使用空格绕过正则
    14 、 svg 标签中可解析实体编码
    15 、标签内增加空白符,不影响标签原有意义
  • 相关阅读:
    2024年8月7日(mysql主从 )
    PX4模块设计之十一:Built-In框架
    【Python零基础入门笔记 | 12】程序员为什么自嘲面向Bug编程?
    Spring之AOP原理及总结
    深浅拷贝原理+案例解析
    2023/9/30 使用消息队列完成进程间通信
    AIGC程序员效能提升之道
    使用sentinel实现熔断限流——微服务总结(四)
    Python_机器学习_常用科学计算库_第2章_2.环境安装和使用
    个人博客系统的总结
  • 原文地址:https://blog.csdn.net/hakksjss/article/details/137955762
  • 最新文章
  • 【FHE】我们如何实现同态加密推理(八):SiLU 的密文化——两条路径,和一个 8 字节的开关
    SQLcl 中 c/old/new 替换变量为何失效?先定位再替换
    不让模型写作文,直接从它脑子里读答案:Jev 决策在 .NET 的两条路线
    Halo插件:支持GitHub的图床附件策略
    电视投屏界的“一股清流”!SimpleTVCast 6.0.0-beta 抢先体验:无需TV端App,界面大换血!✨
    华三VXLAN集中式网关实战指南:Spine多活网关 + 双活接入(M-LAG)
    软件更好写之后口碑会更重要
    大 O、大 Omega、大 Theta 的区别,O(n) 复杂度是什么意思
    Java标签跳转:一个鲜为人知但却很实用的小技巧
    多智能体系统论文速读
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号