【问题标题】:sending data with a python socket isnt the same as netcat - buffer overflow使用 python 套接字发送数据与 netcat 不同 - 缓冲区溢出
【发布时间】:2020-05-29 20:23:38
【问题描述】:

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

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

当尝试用 python 脚本做同样的事情时,什么都没有发生,我尝试调试了一段时间,包括使用 python2、wireshark,但在客户端和服务器上似乎都一样,除了服务器不是' t回复,很奇怪但是回复的是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】:

    我认为您应该将'\n\r' 放在数据的末尾。

    代码应该是这样的:

    s.send(data +'\n\r')
    

    【讨论】:

      猜你喜欢
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-08
      • 2012-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多