word填充图片如何保持和原图比例一致_【为什么一张图片就能苹果手机重启?】...

转自:看雪学院,作者:obaby

小编发了《最新!用一张图让苹果手机关机》,只要打开这张图片,就可以导致iphone手机关机重启。今天看雪论坛(bbs.pediy.cm)就有小伙伴 obaby 和 exchen(陌陌安全)分析出来了,让我们一起来看看吧!

ba66d8eda76c52313e90587e6fd4db4a.gif

作者:obaby

原文链接:https://bbs.pediy.com/thread-251601.htm

刚看到这个的时候就尝试了一下,嗯,很成功,重启了~~

010编辑器打开图片文件会发现少了一部分数据。

80ad1ffe759e100b431db01415d04703.png

对比正常的jpeg文件:

f0af829a156806fb36112eed32350a5a.png

一个典型的数据格式为:

// 图片起始

开始猜测是否是由于缺少了结束标记导致的,于是我找了一张图。

去掉了最后的结束标记,事实证明并没有导致崩溃,但是却意外发现,如果只删除最后的结束标记会导致微信安卓版无法发送图片,并且安卓自带的相册无法显示图片。

5e5c1fb567abb560e246aae7bf9e314a.png

如果发送给朋友则会直接发送失败,一致卡在0%。

4e69ff1768bb31226970d8feed731c04.png

并且这个图无法发布到朋友圈。

e7a67aa039a99af68dbe4327cda06caa.png

图片的这个样式其实在网络状态较差的情况下还是挺容易发现类似的现象的,如果网络有问题图片在加载的过程中就会出现只显示一半的情况。那么实际这个图的原始大小应该远大于1.5m应该是丢失了部分数据。按照画面比例实际丢失的数据大约有2/3。

但是至于为什么崩溃猜测可能和系统解析jpeg的库有关,昨晚想调试下,结果发现下载的支付宝咂壳不完整,monkeydev无法正常编译安装,手头也没越狱的设备只好作罢。

猜了一下可能的原因:

  • 图片格式要求jpeg

  • 数据长度

  • 图片的宽高

上午的时候收到消息说现在可以随意构造图片了, 并且发了个图过来。试了一下确实同样会导致重启。对比了一下发现两个图片的数据头部是一样的,也就是说后来的这张图与最开始的图除了图片的数据不一样其他的数据都是一样的。现在还不知道具体是在解析那些数据的时候出现了问题,但是可以肯定的一点是,基于这个文件头可以构造别的图片了。

由于jpeg包含了分辨率,位深度, 单位分辨率相关信息,所以在构造这个图片的时候要保证数据来源图片的分辨率和原始图片的一致:

b6baa3d022d89af0affa3a22515e976e.png

如果不一致可以使用ps等软件进行格式和分辨率转换。

两者一致之后剩下的工作就比较简单了,就是替换图片的scandata字段。该字段从FFDA(偏移850h)开始,到结尾的FFD9(偏移18CFF0)结束。

建议使用010 editor来进行处理,找到要替换数据的scandata字段,复制,粘贴到旧文件的scandata字段,删除18CFF0之后的数据保存即可。

7371b7ff405be153ae4bbf5efe3db241.png

测试图片链接:http://hlzjc.gdcyl.org/kindeditor/attached/image/20170627/2017062715330265265.jpg

合成之后的效果:

bc602cf6f08ed00cdc3b4d81f3656e43.png

并且这个数据并不是必须是真实的数据,直接权0填充掉scandata也是可以的:

221ec734923bec08b56a7541921e54a6.png

这样一个能让iOS重启的图片就做好了,如果有条件可以找个iOS设备调试下看看具体的崩溃地址,这个崩溃太及时了,系统没有办法记录app的崩溃日志,所以要看崩溃日志貌似也只能调试,等再有时间了拿真机去调试下看看。

参考链接: https://blog.csdn.net/shelldon/article/details/54144406

原始地址:https://bbs.pediy.com/thread-251582.htm

b751465145d952423d981b5196dd527f.png

b751465145d952423d981b5196dd527f.png

d26422628587ae03ccebd07bac1f0668.png

747cbe5553f0517315c5f1cb3a850190.png

ba66d8eda76c52313e90587e6fd4db4a.gif

作者:暗夜盗魔(看雪ID)

原文链接:https://bbs.pediy.com/thread-251601.htm

昨天看到一个贴子:一张图片能让 iOS 系统重启,通过微信等社交软件可以快速进行传播。对这张图片非常感兴趣,于是开始研究,通过分析文件结构,发现 WechatIMG13720 1.jpg 样本文件有三个特点:

(1) 对比其他照片多了一个 AROT 的结构,这个结构很可疑,信息如下:

3e0f37ef144f02018bc3b033838b4c87.png

只有 iPhone X 等高端机型拍摄的照片才会有 AROT 结构,而 iPhone 6 等低端的机型拍摄的照片没有 AROT 结构,可能出 iPhone 6 那时苹果还没加这类的功能。

(2) Exif 结构里的 ifdMainImage,找到 ExifTag 为 247, 有一个名 usValue,这个值必须要是 1, 有时拍照保存的是 6, 不会触发漏洞,这个值和图片的显示方式有关。

0aa39d078caf8597730eb9b798df1007.png

(3) 样本图片之所以显示不完整,是因为scanData 数据被截断,而且没有结束标记,正常的 jpg 图片,最后是有结束标记(FF D9),但是样本文件却没有。

通过以上的三个特点,判断造成系统重启的原因是,由于图片被截断,系统在处理 AROT 结构时发生了错误。如果要构造一个能让系统重启的图片,使用 iPhone X 拍照,使用 010 Editor 打开文件,查看确认 Exif -> ifdMainImage -> ExifTag(247) -> usValue 为 1, 然后删除最后的结束标记(FF D9),再把 scanData 至少删掉一半的数据,保存为新的图片文件,发送给微信好友,点击查看原图系统马上重启。

相关参考资料

  • http://www.hackerfactor.com/blog/index.php?/categories/1-Image-Analysis/P2.html

  • https://www.media.mit.edu/pia/Research/deepview/exif.html

  • Author: exchen

de14e9c2d86318b045d4468c11ec7bef.png

a34768a85eed38f8ab603081a8962cdd.gif

- End -

d9200a662c2a95eb3de4c8a5d5d83e56.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值