编辑:我正在使用不推荐使用apply()
的泡菜漏洞进行安全竞赛。apply
似乎是您可以使用 pickle 指令字符串调用方法的方式。但是,我很乐意学习更好的方法。
我正在尝试使用在 a 上调用apply()
该send()
方法socket._socketobject
,但我收到一条奇怪的错误消息。
In [130]: client
Out[130]: <socket._socketobject at 0x108d0bfa0>
In [131]: apply(socket._socketobject.send, (client, "stuff"))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-131-3f9b1f1de824> in <module>()
----> 1 apply(socket._socketobject.send, (client, "stuff"))
TypeError: 'member_descriptor' object is not callable
有趣的是,send()
它是函数类型,让我称之为:
In [128]: client.send
Out[128]: <function send>
In [129]: client.send("stuff")
Out[129]: 5
这就是我最初获得名为 client 的套接字对象的方式:
In [107]: import signal
In [108]: sock = socket.socket()
In [109]: sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
In [110]: sock.bind(('0.0.0.0', 1025))
In [111]: sock.listen(10)
In [112]: signal.signal(signal.SIGCHLD, signal.SIG_IGN)
Out[112]: 0
In [113]: client, addr = sock.accept()
任何帮助表示赞赏!