篡改内存elf文件getshell

admin 2023年1月10日16:37:39安全文章评论4 views535字阅读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

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月10日16:37:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  篡改内存elf文件getshell http://cn-sec.com/archives/1510200.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: