Android学习第十天-----本地拒绝服务漏洞之一

本地组件拒绝服务攻击

先给一些科普
序列化是什么,为什么要序列化

序列化是指把Java对象转换为字节序列并存储到一个存储媒介的过程。反之,把字节序列恢复为Java对象的过程就叫做反序列化。

为什么要序列化
JVM(Java Virtual Machine(Java虚拟机))
Java对象存在的前提是JVM有在运行,因此如果JVM没有运行或者在其他机器的JVM是不可能获取到指定的java对象的。而序列化操作则是把java对象保存到存储媒介上,可以在以上不可能的情况下仍然可以使用Java对象。
所以,序列化的主要作用是:

永久性保存对象,保存对象的字节序列到本地文件中;
通过序列化对象在网络中传递对象;
通过序列化在进程间传递对象。

Android中序列化

在Android中,经常需要在多个部件(Activity , Fragment , Service)之间通过Intent传递一些数据,如果是一些普通类型的数据可以通过PutExtra()进行传递,如果是对象的话就得先进行序列化才能传递。在Android中有两种序列化的接口,Serializable 和 Parcelable.

Serializable:(JavaSE本身就支持的)保存对象的属性到本地文件、数据库、网络流、rmi以方便数据传输。
Parcelable:(Android特有功能)因为Serializable效率过慢,为了在程序内不同组件间以及不同Android程序间(AIDL)高效的传输数据而设计,这些数据仅在内存中存在。

何时使用它们
Parcelable的效率会比Serializable高,数据仅存在于内存中。;而Serializable因为使用到了反射,会相对慢一些,因此,只在内存间传递数据的话推荐用Parcelable,而如果是要进行保存或者网络传输则选择Serializable。

原文链接

这个之一的漏洞就是

再科普一些 Android Intent

介绍

调用其他应用的setComponent

Intent中Component使用

安卓系统DOS收集

可以看一下这个
wooyun知识库

本地拒绝服务

1) 漏洞位置:

处理getIntent()的intent附带的数据

2) 漏洞触发前提条件:

getIntent()的intent附带空数据、异常或畸形数据;
处理getXXXExtra()获取的数据时没有进行异常捕获;

3) 漏洞原理:

Android系统中提供了Intent机制来协助应用间的交互与通讯,其负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,系统则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。调用的组件在处理Intent附加数据的时候,没有进行异常捕获,因此当处理空数据、异常或者畸形数据时,导致应用崩溃。

具体的看这里

看一下wooyun的一个例子

搜狗输入法空字节拒绝服务

这个里面的不错 可以看卡

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值