美文网首页网络安全
pwn学习之ret2libc3——偏移计算初体验

pwn学习之ret2libc3——偏移计算初体验

作者: 小白King | 来源:发表于2019-01-18 23:27 被阅读922次

拿到题目,先看看保护措施,再拖进ida分析:


image.png

源程序开启了堆栈不可执行保护,问题不大,看ida:


image.png
gets函数高危函数,还是栈溢出的漏洞,下一步找system和/bin/sh
image.png

这题看着好像很麻烦,找不到system和/bin/sh的地址,于是先找到知道的东西先:
先看看栈的大小先:


image.png

这里使用暴力法,扔一堆字符进去!看报错点再哪里,然后可以间接查看栈大小,这是覆盖了返回地址的相对偏移大小,也就是可以直接填充的‘A’的个数,下一步,那么我们如何得到 system 函数的地址呢?这里就主要利用了两个知识点system 函数属于 libc,而 libc.so 动态链接库中的函数之间相对偏移是固定的,也就是说要找基地址,因为公式:A真实地址-A的偏移地址 = B真实地址-B的偏移地址 = 基地址!

基地址大家都一样,间接地通过B来获得基地址从而获得A的真实地址!那么如何得到 libc 中的某个函数的地址呢?我们一般常用的方法是采用 got 表泄露,即输出某个函数对应的 got 表项的内容。当然,由于 libc 的延迟绑定机制,我们需要泄漏已经执行过的函数的地址,已经执行过的话就会在got表生存下来,有了真实的地址!这里,我们选用puts函数实现2次调用,让它生存下来:


image.png

交互时接受返回的地址,由于是32位的文件,每4位切一次片,用u32可以转成地址,


image.png

接下来根据泄露出来的puts的真实地址去查libc的版本:
我们知道这些函数地址是动态链接的,但是最后12位是不变的,利用这个特性,可以查了,


image.png
可见最后的12位是ca0(3*4=12),查表
很好,得到了我们想要的版本了,偏移量随之产生:
image.png

脚本差不多可以写了:


image.png

最后运行下:


image.png

成功提取到权限!这题做了我2个多钟头,一直钻研,当然途中遇到很多的弯路,就不多说了,学习才是王道,加油!

相关文章

  • ret2libc3

    主要借鉴wppwn学习之ret2libc3——偏移计算初体验https://www.jianshu.com/p/5...

  • pwn学习之ret2libc3——偏移计算初体验

    拿到题目,先看看保护措施,再拖进ida分析: 源程序开启了堆栈不可执行保护,问题不大,看ida: 这题看着好像很麻...

  • 基本ROP实验3_ret2libc3

    利用ret2libc3实验原理,用pwn的文件来尝试一下。 首先,拿到了一个pwn文件,用IDA女神看看源程序是什...

  • pwn入门的一些学习资料

    总结记录一下pwn入门的一些学习资料 pwn入门学习的网站: CTF Wiki 必备技能: 汇编语言要搞pwn首先...

  • PWN之Canary学习

    Canary 参考链接:https://ctf-wiki.github.io/ctf-wiki/pwn/linux...

  • 坐标偏移计算

    已知: 旧的配准信息如下: 条件A:原坐标39478400,3849800,现坐标-1600,-200。求新的配准...

  • 【linux内核漏洞利用】ret2dir利用方法

    完全参考rtfingc的文章linux kernel pwn 之 ret2dir 学习,附赠文件及源码点这里,原文...

  • 本节介绍

    本节主要系统的介绍Pwn中的比较系统的一些学习记录。 自我总结的学习路线 基础 进阶 提高 前置技能 学习Pwn ...

  • 开坑入PWN第一步

    开始开坑学习PWN了,老师希望我能学PWN,总结PWN题的规律日后好挖洞,于是一个妄想成为web手的菜狗转战大表哥...

  • 逆向工程二:微信抢红包

    逆向工程二:微信抢红包 微信版本: WeChat 6.5.20 (计算ASLR偏移,是之前版本;不同版本的偏移地址...

网友评论

    本文标题:pwn学习之ret2libc3——偏移计算初体验

    本文链接:https://www.haomeiwen.com/subject/lpgodqtx.html