首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Shiro RememberMe 漏洞检测的探索之路

若秘钥可控,同时 Cookie 值是由攻击者构造的恶意 Payload,就可以将流程走通,触发危险的 Java 反序列化。...openConnection().getContent(); 当漏洞存在时,反连平台就会收到一条 HTTP 的请求。...与之类似的还有 URLDNS 这个利用链,只不过它的反连是基于 DNS 请求。实战中常用的还有 JRMP 相关的方法,我们可以使用类似 fastjson 的方法来做 Shiro 的检测。...使用一个空的 SimplePrincipalCollection 作为 payload,序列化后使用待检测的秘钥进行加密并发送,秘钥正确和错误的响应表现是不一样的,可以使用这个方法来可靠的枚举 Shiro...将上面说的整个流程做自动化检测并非只是发个请求那么简单,我随便列举几个细节,大家可以思考下这几个小问题该如何处理: 如何判断目标是 Shiro 的站点,Nginx 反代动静分离的站点又该怎么识别?

3.6K30

protocol buffers 序列化数据

因为开发人员必须确保请求发起者与处理请求的实际服务器之间的所有服务器都能理解新协议,然后才能切换开关以开始使用新协议。 这也就是每个服务器开发人员都遇到过的低版本兼容、新旧协议兼容相关的问题。...另外在反序列化的过程中,无法被识别的枚举值,将会被保留在 messaage 中。因为消息反序列化时如何表示是依赖于语言的。...在支持指定符号范围之外的值的开放枚举类型的语言中,例如 C++ 和 Go,未知的枚举值只是存储为其基础整数表示。...在诸如 Java 之类的封闭枚举类型的语言中,枚举值会被用来标识未识别的值,并且特殊的访问器可以访问到底层整数。 在其他情况下,如果消息被序列化,则无法识别的值仍将与消息一起序列化。 6....枚举中的保留值 如果您通过完全删除枚举条目或将其注释掉来更新枚举类型,未来的用户可以在对该类型进行自己的更新时重新使用数值。

1.2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Protocol Buffers (Proto) 语法详解

    它主要用于数据序列化,也支持定义服务接口。Proto文件定义了数据结构和RPC服务,然后可以生成各种语言的代码,以实现数据的序列化和反序列化,以及服务的调用。1....每个字段有一个唯一标签(从1开始的整数),用于序列化时标识字段。字段类型可以是基本数据类型、枚举、消息或其他复杂类型。...2.3 定义枚举(Enum)enum Gender { MALE = 0; FEMALE = 1; OTHER = 2;}enum 关键字用于定义枚举类型。枚举值从0开始,且每个值必须唯一。...Proto3特性默认值:在Proto3中,所有字段默认为optional,无需显式声明。无required字段:Proto3不支持required字段。无默认值:字段不能有默认值。5....PersonRequest 和 PersonResponse:定义RPC请求和响应的消息类型。

    55200

    更快更小!ProtoBuf 入门详解

    请求 fetch('https://your-api-endpoint.com/login', { method: 'POST', // 请求方法 headers: { 'Content-Type...(对于复杂的数据结构,如果不进行序列化,直接发送 text/plain 的数据,后端显然是无法准确理解目标数据的,所以序列化在传输结构化的数据时起到极其重要的作用)。...默认值的规则如下: 对于 string ,默认值为空字符串 对于 byte , 默认值为空字节 对于 bool , 默认值为 false 对于数字类型,默认值为 0 对于 enum 类型,默认值为第一个定义的枚举值...使用 oneof 类型表示特殊的消息(包含多个字段,但这些字段在任何给定时间只能有一个字段被设置) 使用 service 定义定义服务端接口的请求与响应格式。...enum State { UNKNOWN = 0; // 枚举值必须从 0 开始 STARTED = 1; RUNNING = 2; STOPPED = 3; } // 定义一个消息类型 message

    1.4K74

    一站式解决使用枚举的各种痛点

    如果变量值仅有有限的可选值,那么用枚举类来定义常量是一个很常规的操作。 但是在业务代码中,我们不希望依赖 ordinary() 进行业务运算,而是自定义数字属性,避免枚举值的增减调序造成影响。...因此,我们需要自己来扩展相应的转化机制,这其中包括: SpringMVC 枚举转换器 ORM 枚举映射 JSON 序列化和反序列化 自定义 SpringMVC 枚举转换器 明确需求 以上文的 CourseType...为例,我们希望达到的效果是: 前端传参时给我们枚举的 index 值,在 controller 中,我们可以直接使用 CourseType 来接收,由框架负责完成 index 到 CourseType...SpringMVC 的枚举转化器只能支持 GET 请求的参数转化,如果前端提交 JSON 格式的 POST 请求,那还是不支持的。...@JsonValue:在序列化时,只序列化 @JsonValue 注解标注的值 @JsonCreator:在反序列化时,调用 @JsonCreator 标注的构造器或者工厂方法来创建对象 最后的代码如下

    1.8K20

    Web消息主体风格(Message Body Style)

    3: Bare, 4: Wrapped, 5: WrappedRequest, 6: WrappedResponse 7: } 我们知道请求消息和回复消息分别是对操作方法输入参数和返回值...(输出参数和引用参数)的封装,WebMessageBodyStyle中的Bare表示请求消息和回复消息的主体部分仅仅包含针对输入参数和返回值(输出参数和引用参数)序列化后的内容,而Wrapped则会在外面包装一个基于当前操作的...枚举项WrappedRequest和WrappedResponse用于单独针对请求消息和回复消息的主体进行封装。...我们可以看出Employee被序列化后生成的XML在请求消息中作为元素的子元素;对于回复消息来说,Employee被序列化后生成的XML的根元素名称为CreateResult,而不是使用返回值。

    819100

    代码质量规则

    CA1008:枚举应具有零值 像其他值类型一样,未初始化枚举的默认值为零。 无标志特性的枚举应通过使用零值来定义成员,这样默认值即为该枚举的有效值。...其他类型名称不应使用这些保留的后缀。 CA1712:不要将类型名用作枚举值的前缀 枚举成员的名称不能使用类型名称作为前缀,因为类型信息将由开发工具提供。...CA2217:不要使用 FlagsAttribute 标记枚举 外部可见的枚举使用 FlagsAttribute 标记,并且它包含的一个或多个值不是 2 的幂或不是为该枚举定义的其他值的组合。...无法进行序列化的成员可能是指针,例如使用 NonSerializedAttribute 进行标记的静态成员或字段。...CA5391:在 ASP.NET Core MVC 控制器中使用防伪造令牌 处理 POST、PUT、PATCH 或 DELETE 请求而不验证防伪造令牌可能易受到跨网站请求伪造攻击。

    2.2K30

    Django REST Framework

    URL的参数代表过滤 返回值: 每一个返回代码都有具体特定含义 返回格式:推荐固定具体格式 DjangoRestFramework(DRF) https://q1mi.github.io/Django-REST-framework-documentation...创建视图聚合 序列化 序列化: 把系统运行中的一些实例等转换成一种可直接表示出来的格式,用来保存,传输等 反序列化: 序列化的反操作序列化/反序列化-DRF 实验步骤 创建project DRF2 创建..., **kwarg) 反序列化 验证 is_valid: 验证数据是否合法,返回boolean 在使用从外部传入的数据之前,必须使用此函数进行验证 如果验证失败,返回数据错误异常 validated_data...的,跟django的HttpRequest不太一样 在得到Request之前有一个Parse对传入的数据请求进行解析 data属性 请求数据体,类似于Django的request.POST, request.FILES...GenericAPIView - APIView的子类 - 支持的属性 - queryset:查询结果集 - serializer_class: 视图使用的序列化器

    2.2K63

    Springboot 实现 ES-SQL 的流程

    背景 记录一个最近半年犯了两次的低级编码错误,校验某个字符串信息为枚举类的某实例时,写成了:枚举类的实例.equals(字符串) ,结果总是 false ,打印信息貌似正确,实际执行结果总是不达预期,...本文记录本周开发工作中遇到的几个小问题,Bug 是无法完全消除的,只能尽量减少。...问题分析:代码有缺陷,有些请求使用 ES 进行数据查询完成后,没有关闭 ES 连接对象。ES 连接不关闭,有什么问题呢?...jackson 序列化异常 在将 ElasticSearch 的 Response 对象序列化时碰到一个异常信息: Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException...format=json"; Request request = new Request("POST", searchIndex); request.setJsonEntity(queryJsonString

    1.3K81

    Dubbo 学习笔记(4)

    反之,Dubbo缺省协议不适合传送大数据量的服务,比如传文件、视频等,除非请求量很低。 ?...连接个数:单连接 连接方式:长连接 传输协议:TCP 传输方式:NIO异步传输 序列化:Hessian二进制序列化 适用范围:传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提供者...枚举A多一种枚举(或B少一种枚举),A使用多出来的枚举进行传输 抛异常 A -> B 枚举A多一种枚举(或B少一种枚举),A不适用多出来的枚举进行传输 不抛异常,B正常接收数据 A -> B A和B的属性名相同...*实现,采用阻塞式短连接和JDK标准序列化方式。 注意:如果正在使用RMI提供服务给外部访问,同时应用依赖了老的common-collections包,存在反序列化安全风险。...:SOAP文本序列化 适用场景:系统集成,跨语言调用 约束 参数及返回值需事先Seriazable接口 参数尽量使用基本类型和POJO

    69220

    PHP代码审计笔记

    sql=select会被过滤 parsestr() 对字符串进行解析,同时还自带urldecode功能,所以参数通过使用%2527就可以绕过addslashes函数 stripcslashes() 反引用一个使用...temp=4e11输出4 addslashes() 使用反斜线引用字符串 在单引号 双引号 反斜线 与NUl 前面加上反斜线 preg_replace() /e PHP5.5.0以下可用,5.5.0及以上版本已经被弃用了...,也就是说如果以POST、GET方式传入同样的变量,那么用REQUEST获取的就是POST的变量值。...反序列化问题 PHP Session 序列化及反序列化处理器设置使用不当会带来的安全隐患 http://www.91ri.org/15925.html http://www.vuln.cn/6413 PHP...竖线 + 经过 serialize() 函数反序列处理的值 php_binary 键名的长度对应的 ASCII 字符 + 键名 + 经过 serialize() 函数反序列处理的值 php_serialize

    1.2K40

    Android 序列化框架 Gson 原理分析,可以优化吗?

    在序列化时,首先使用反射获取字段值,再使用字段的 BoundFiled 序列化; 在反序列化时,首先创建对象实例(下文会讨论如何创建),再使用依次使用字段的 BoundField 反序列为字段类型的值,...枚举> 映射表 枚举 - name> 映射表 2、在序列化时,会写入枚举的 name。在反序列化时,会根据 name 查询枚举对象。...1、基础类型:Integer、Calendar 等基础类型由固定的 TypeAdapter,会通过 new 关键字创建对象; 2、枚举:枚举的序列化和反序列化只是在枚举名 name 和枚举对象之间切换,...由于 Java 有泛型擦除,无法直接在 .class 语法上声明泛型信息,Gson 的方法是要求程序员创建匿名内部类,由 Gson 在运行时通过反射获取类声明上的泛型信息。...是时候丢弃 Gson 了: https://juejin.cn/post/6844903662783823885 [7] 抖音 Android 性能优化系列:启动优化实践(反序列化优化): https

    2.4K50

    在 .NET 对象和 JSON 互相序列化的时候,枚举类型如何设置成字符串序列化,而不是整型?

    默认情况下,Newtonsoft.Json 库序列化和反序列化 JSON 到 .NET 类型的时候,对于枚举值,使用的是整数。...那么,如何能使用字符串来序列化和反序列化 JSON 对象中的枚举呢? —— 使用转换器(JsonConverter)。...其中枚举的转换是 StringEnumConverter,我们只需要将其标记在属性上即可。...,增加了转换器后,这个对象的序列化和反序列化将成: 1 2 3 { "Level": "very" } 那个 StringEnumConverter 后面的参数 true 表示使用 camelCase...: 1 2 3 { "level": "very" } 本文会经常更新,请阅读原文: https://blog.walterlv.com/post/newtonsoft-json-convert-enum-as-strings.html

    75740

    DRF JWT认证(二)

    反解出 user 对象 1)将token按 ....使用接口测试工具发送post请求到后端,就能基于auth的user表签发token { "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6IkhhbW1lciIsImV4cCI6MTY0OTUyNDY2MiwiZW1haWwiOiIifQ.P1Y8Z3WhdndHoWE0PjW-ygd53Ng0T46U04oY8...,是有一定的风险,可以使用,但是不能更改,就好比你的身份证丢了,别人可以在你不挂失的情况下去网吧上网 '''第三段不能不能反解,只能做base64解码,第三段使用base64编码只是为了统一格式'...源码中签发校验都在序列化类中完成,这种写法确实比较常用,我们来使用这种方式自定义,将上面视图的校验逻辑写到序列化类中,这个序列化类只用来做反序列化,这样我们就可以利用 反序列化 的字段校验功能来帮助我们校验...context,那么就可以从序列化类打印出请求的方法,context是序列化类和视图类沟通的桥梁 自定义认证类 auth.py import jwt from django.utils.translation

    1.1K20

    java 枚举(enum) 全面解读

    ,从Color类中可以看出,它是从0开始按自然数顺序增长,且其值是final类型,外部无法更改.对于 ordinal()方法,官方建议尽量不要使用它,它主要是提供给EnumMap,EnumSet使用的....而枚举则不同,在序列化的时候Java仅仅是将枚举对象的name属性输出到结果中,反序列化的时候则是通过Enum的valueOf()方法来根据名字查找枚举对象。...枚举类型是类型安全的(typesafe) 无法继承其他类(已经默认继承Enum) 枚举的使用 枚举常量 如上诉 Color枚举类,就是典型的枚举常量....,可以对传入的值进行类型检查: 如有个 handleColor(Color color)方法,那么方法参数自动会对类型进行检查,只能传入 Color.WHITE和Color.BLACK,如果使用 static...反序列化时创建对象 解决方案 : 使用readResolve()方法来避免此事发生. 这两种缺点虽然都有方式解决,但是不免有些繁琐.

    96610

    高效的数据压缩编码方式 Protobuf

    另外在反序列化的过程中,无法被识别的枚举值,将会被保留在 messaage 中。因为消息反序列化时如何表示是依赖于语言的。...在诸如 Java 之类的封闭枚举类型的语言中,枚举值会被用来标识未识别的值,并且特殊的访问器可以访问到底层整数。 在其他情况下,如果消息被序列化,则无法识别的值仍将与消息一起序列化。 5....枚举中的保留值 如果您通过完全删除枚举条目或将其注释掉来更新枚举类型,未来的用户可以在对该类型进行自己的更新时重新使用数值。...(注意字段和值的区别,字段是 field,值是 value) 9. 未知字段 未知数字段是 protocol buffers 序列化的数据,表示解析器无法识别的字段。...发送枚举形式的枚举值而不是字符串:在 JSON 输出中默认使用枚举值的名称。可以提供一个选项来使用枚举值的数值。

    4.7K11
    领券