漏洞 — zergRush (补充)

本文详细分析了zergRush漏洞的来源,指出问题出现在FrameworkListener.cpp的onDataAvailable函数中,由于未正确处理超过16个空格分隔的字符串导致栈溢出。通过构造特定输入,可以覆盖栈空间中的LR寄存器,实现提权。文章还简要介绍了栈溢出的基本原理,并提到zergRush.c如何利用此漏洞执行shellcode。
摘要由CSDN通过智能技术生成

没看到上文的参见一下

 http://blog.csdn.net/tomken_zhang/article/details/6866260

 

上文中还没有来细细分析漏洞的出处及利用过程,现在又有所收获,特记录下来。

 

上文说到,向 vold 发送了一段 SOCKET 数据,然后 vold 崩溃了。 崩溃的愿意是栈溢出,究竟在哪溢出的呢,其实在 zergRush.c 中说了一些,文件的头部就写到 libsysutils root exploit,意思是这个库有个漏洞,恰恰被 vold 进程使用,而这个进程是 root 用户能力。

 

找到 libsysutils 代码,在 \android2.32\system\core\libsysutils\src 这个位置,文件不是太多,我是追查了好处才定位到一个函数有问题,具体过程不说了,比较痛苦和迂回。(经验少啊!)

FrameworkListener.cpp 文件

>> onDataAvailable 收到 Socket 数据。

>> 只读 255 的 buffer

>> dispatchCommand 分配数据

void FrameworkListener::dispatchCommand(SocketClient *cli, char *data) {
    FrameworkCommandCollection::iterator i;
    int argc = 0;
    char *argv[Fr
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值