首页 > 其他分享 >漏洞实战部分2-安卓应用ZipEntry对象问题实战

漏洞实战部分2-安卓应用ZipEntry对象问题实战

时间:2022-12-18 15:46:28浏览次数:40  
标签:实战 .. zip 安卓 ZipEntry entry data App

安卓应用漏洞学习

本节课介绍ZipEntry对象,这个对象常用于解压压缩包操作。

// This class is used to represent a ZIP file entry.
// Author:
// David Connelly
public
class ZipEntry implements ZipConstants, Cloneable {
String name; // entry name
long xdostime = -1; // last modification time (in extended DOS time,
// where milliseconds lost in conversion might
// be encoded into the upper half)
FileTime mtime; // last modification time, from extra field data
FileTime atime; // last access time, from extra field data
FileTime ctime; // creation time, from extra field data
long crc = -1; // crc-32 of entry data
long size = -1; // uncompressed size of entry data
long csize = -1; // compressed size of entry data
int method = -1; // compression method
int flag = 0; // general purpose flag
byte[] extra; // optional extra field data for entry
String comment; // optional comment string for entry
// Android-added: Add dataOffset for internal use.
// Used by android.util.jar.StrictJarFile from frameworks.
long dataOffset;

注释说明这个类对象是操作ZIP 文件的,App中Zip解压缩操作是最容易出差的地方。 常用的代码格式如下:

FileInputStream fileinputstream = new FileInputStream("/sdcard/case2.zip");
ZipInputStream zipInputStream = new ZipInputStream(fileinputstream);
ZipEntry zipEntry;
while ((zipEntry = zipInputStream.getNextEntry()) != null) {
...

代码以流的形式读取文件再转为ZipEntry操作对象.其中zipEntry.getName()函数是获取压缩文件的文件名。当存在一个文件名包含../../../时,zipEntry.getName()也一并返回.如果后面没有过滤../那么继续执行就会目录穿越出去。

实战案例: 为了学习这个漏洞,我实现了一个App,通过这个App来理解利用。

功能: App只有一个功能,接收zip包文件路径。

代码: App启动时再私有目录下创建两个目录tmp、hack,正常的zip包传给App是无法解压到hack目录下。

image

image

创建一个带../的压缩包构造好穿越路径,使App解压包到hack目录下。

image

image

这里提供一个python脚本,用这个脚本可以生成包含../../的压缩文件。

import zipfile

if __name__ == "__main__":
try:
binary = 'hello hack'
zipFile = zipfile.ZipFile("case2.zip","a",zipfile.ZIP_DEFLATED)
zipfile.ZipInfo("case2.zip")
zipFile.writestr("../hack/demo.txt",binary)
zipFile.close()

except IOError as e:
raise e

将生成的case2.zip push到手机设备或模拟器中的/sdcard/目录下。 启动case2.apk 输入 /sdcard/case2.zip 完成

 


 

 

 

关注微信公众号或者可以直接加作者微信:

 

 

 

 

 

标签:实战,..,zip,安卓,ZipEntry,entry,data,App
From: https://www.cnblogs.com/haidragon/p/16990441.html

相关文章

  • 漏洞实战部分-安卓应用层getLastPathSegment函数问题
    安卓应用漏洞学习case1本课程学习关键函数getLastPathSegment,该函数源码定义如下:/***Getsthedecodedlastsegmentinthepath.**@returnthedec......
  • 13 刘欣晨 第八章实例+实战
    实验 一 项目名称:    创建计算BMI指数的模块 deffun_bmi(person,height,weight):'''功能:根据身高体重计算BMI指数person:姓名height:身高,......
  • IOS+Appium+Python自动化全实战教程
    背景由于公司的产品坐落于不同的平台,如ios、mac、Android、windows、web。因此每次有新需求的时候,开发结束后,留给测试的时间也不多。此外,一些新的功能实现,偶尔会影响其他......
  • 第十六章《正则表达式》第5节:正则表达式实战应用
    正则表达式在实际开发过程中应用最多的场合就是验证数据格式的正确性,例如用户在一个网站注册时需要填写电子邮件地址、手机号码等信息,这些信息都有特定格式,使用正则表达式就......
  • 信号功能实战
    1. 信号简介    (1)每个线程都有自己的信号屏蔽字。    (2)每个线程都对同一信号都共享一个信号处理函数。    (3)当一个线程调用pthread_create()创......
  • [OpenCV实战]45 基于OpenCV实现图像哈希算法
    目前有许多算法来衡量两幅图像的相似性,本文主要介绍在工程领域最常用的图像相似性算法评价算法:图像哈希算法(imghash)。图像哈希算法通过获取图像的哈希值并比较两幅图像的......
  • [OpenCV实战]43 使用OpenCV进行背景分割
    运动背景分割法BackgroundSegment主要是指通过不同方法拟合模型建立背景图像,将当前帧与背景图像进行相减比较获得运动区域。下图所示为检测图像:通过前面的检测帧建立背景模......
  • [OpenCV实战]46 在OpenCV下应用图像强度变换实现图像对比度均衡
    本文主要介绍基于图像强度变换算法来实现图像对比度均衡。通过图像对比度均衡能够抑制图像中的无效信息,使图像转换为更符合计算机或人处理分析的形式,以提高图像的视觉价值和......
  • [OpenCV实战]3 透明斗篷
    目录​​1寻找和存储背景帧​​​​2红色区域检测​​​​3提取红色区域​​​​4背景帧红布区域替换当前帧红布区域。​​​​5工程代码​​​​参考​​弄出哈利波特电影......
  • [OpenCV实战]16 使用OpenCV实现多目标跟踪
    目录​​1背景介绍​​​​2基于MultiTracker的多目标跟踪​​​​2.1创建单个对象跟踪器​​​​2.2读取视频的第一帧​​​​2.3在第一帧中确定我们跟踪的对象​​​......