V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
MrGba2z
V2EX  ›  问与答

有对 buffer overflow 有了解的吗?

  •  
  •   MrGba2z · 2015-02-17 03:37:32 +08:00 · 2147 次点击
    这是一个创建于 3574 天前的主题,其中的信息可能已经有所发展或是发生改变。
    buf_addr
    ret_addr
    这两个我都找出来了

    并且用\xcc 填充到return然后劫持return触发Trap都成功了.

    但是实际用:

    buf = ('\x90' * (buf_len - len(payload))) + payload + struct.pack('<Q', ret_addr)
    的时候劫持return并跳到了payload的位置但并没有成功启动payload

    我在想是不是payload有问题.
    我的payload size 是67 是不是对这个大小有要求?

    0x7fffffffe930: 0x90909090 0x90909090 0x90909090 0x90909090
    0x7fffffffe940: 0x90909090 0xec834890 0xc9314870 0x48ca8948
    0x7fffffffe950: 0x28245489 0x622fba48 0x2f2f6e69 0x89486873

    0xec834890是我payload开始的地方
    5 条回复    2015-02-17 09:25:01 +08:00
    sNullp
        1
    sNullp  
       2015-02-17 03:38:47 +08:00
    是对什么程序的 buffer overflow?
    MrGba2z
        2
    MrGba2z  
    OP
       2015-02-17 04:56:38 +08:00
    @sNullp

    C
    我用gdb发现 劫持return 并不是在strcpy执行完就return的 好像还会执行下面的语句.然后下面的语句又再次改写了buf里的内容.

    就是感觉我劫持到一半,我的shellcode被后面的语句改写了导致运行不起来,
    按理说我劫持了return 后面的语句应该不会执行才对啊

    源程序
    http://pastebin.com/XJz1DF25
    MrGba2z
        3
    MrGba2z  
    OP
       2015-02-17 07:16:59 +08:00
    @sNullp

    NVM, 我解决了.
    填充了一段\x90到会被修改的位置.
    ricorico
        4
    ricorico  
       2015-02-17 09:24:15 +08:00 via iPad
    ricorico
        5
    ricorico  
       2015-02-17 09:25:01 +08:00 via iPad
    看了 Cee 菊苣的 blog 好像有这部分的东西…
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2696 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:29 · PVG 20:29 · LAX 04:29 · JFK 07:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.