美文网首页
pwn学习之——花式栈溢出

pwn学习之——花式栈溢出

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

    第一步看看保护措施,确定方略,再看看ida里面有用信息:


    image.png
    image.png

    看到是栈的溢出漏洞,但是发现栈空间不够写指令,又发现题目创建了个堆给你,应该可以好好利用这个堆实现我们想要的功能,正常来说,当栈的空间不够用时是写入bss段的,这里正好可以用,就先用吧,接下来找有用信息:


    image.png
    看来没有system和/bin/sh,有些迷,看到还有一个文件libcpovit.so,拖ida进去看看:
    image.png
    发现了我们想要的system函数,同时参数有效,就是直接得到flag,那么接下来就是要在povit中获取这个ret2win的真实地址了,再找找信息:
    image.png
    image.png

    发现了相同的函数,思路已经比较清晰了:
    首先让function函数执行一次,在got表中生成对应的真实地址,然后偏移量是利用在libc表中的偏移和真实表中的偏移相同,先计算出在libc表中ret2win和function之间的偏移。再用function真实地址+偏移地址=ret2win的真实地址。
    脚本就可以写出来了:
    1、计算偏移:


    image.png

    2、执行一次获取got表上的真实地址:


    image.png
    3、求ret2win的真实地址并调用这个函数:
    image.png
    4、得到堆顶指针:
    image.png
    5、栈溢出操作:
    image.png

    6、验证答案:


    image.png
    完整的脚本:
    image.png
    image.png

    花式栈溢出:先把指令放在一个地方,给个地址返回值,然后就能在有限的栈溢出空间进行操作了,相当于跑到另一个地方去执行代码了,优秀!

    相关文章

      网友评论

          本文标题:pwn学习之——花式栈溢出

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