通过给的libc文件泄露地址

libc中的函数相对于libc的基地址的偏移都是确定的,如果有一道题给你了libc的文件,就可以通过libc文件泄露出system函数和binsh的地址,然后再构造payload。

一般通过write()函数泄露 ,通过ELF获得write函数在got表和plt表中的地址

同时获得程序start地址 构造payload 

payload 一般是填充字符(栈的大小)+ ‘aaaa’(覆盖EBP)+  p32(write_plt) + p32(start)(返回地址) + p32(1)+ p32(write_got)+p32(4)

后面三个是write函数的参数 write(1,'write_got',4) 4代表输出4个字节,write_got则为要泄露的地址

binsh在libc中的地址可以直接搜索得到 binsh_libc = libc.search('/bin/sh').next()

其中地址计算如:

libc_base = leak_add - leak_libc(函数在libc中的偏移)

system_add  = libc_base + system_libc

binsh_add = libc_base + binsh_libc

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • GOT表和PLT表: GOT(Global Offset Table,全局偏移表)是Linux ELF文件中用于定...
    xiaobaozi阅读 13,096评论 0 13
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 12,411评论 0 27
  • 0x00漏洞简介 uaf漏洞产生的主要原因是释放了一个堆块后,并没有将该指针置为NULL,这样导致该指针处于悬空的...
    BJChangAn阅读 4,895评论 0 0
  • 大概在七月份,我的手机崩溃了,崩溃到修理费都能再买一个同款的地步。 果断选择了换机,然而选哪款是个问题,之前一直在...
    路人张三阅读 1,427评论 0 0
  • 要勇于下笔,画不好咱再来!(ง •̀_•́)ง 我以为我用的水彩,结果是水粉!友友说没透明度,下次重新...
    清歌浅笑阅读 1,634评论 0 4

友情链接更多精彩内容