篡改内存elf文件getshell

admin 2023年1月10日16:37:39评论35 views字数 535阅读1分47秒阅读模式

适用条件:程序text段具备rwx权限或者能用修改权限的函数修改对应权限

篡改内存elf文件getshell

一般要是程序开启了pie,如果不泄漏地址的情况下就算text段是rwx,但是没有会造成缓冲区溢出的漏洞函数,怎么劫持程序执行流呢?下面举个例子,先看程序:

main函数:

篡改内存elf文件getshell

首先scanf返回的是正确格式化输入的个数,如果v3等于3只需要参数中三个数都是整数,但是v6明显是int64类型可以发生数组越界,result是bss上的内容,最后是显式调用exit(call exit)

篡改内存elf文件getshell

我们可以通过result加上v6偏移去覆盖任意位置(但是程序开启了pie)

篡改内存elf文件getshell

为了达到劫持程序执行流预留后门函数

篡改内存elf文件getshell

现在我们要做的就是不泄漏地址,不爆破的情况下劫持执行流。先看exp:

篡改内存elf文件getshell

最终拿到flag

篡改内存elf文件getshell

然后我们来分析一下exp

首先通过pwntools的API接口把加载到内存中的exit地址里面的call exit改成call win

篡改内存elf文件getshell

然后我们读取elf的exit地址(相对地址,因为有pie)填充成8字节,再转成整数

篡改内存elf文件getshell

然后通过整数溢出计算相对地址

篡改内存elf文件getshell

这样是不是就很巧妙的绕过了pie的随机化了,接下来发送数据就可达到劫持程序执行流,而且不用泄漏地址,靠相对地址攻击即可达成。

原文始发于微信公众号(由由学习吧):篡改内存elf文件getshell

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月10日16:37:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   篡改内存elf文件getshellhttp://cn-sec.com/archives/1510200.html

发表评论

匿名网友 填写信息