首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向易受攻击的WebServer发送HTTP POST命令时使用socket.socket()时出现问题

向易受攻击的WebServer发送HTTP POST命令时使用socket.socket()时出现问题
EN

Stack Overflow用户
提问于 2016-03-12 02:31:53
回答 2查看 64关注 0票数 0

在过去的几天里,我一直在修补一个we服务器漏洞,我被Python中的一部分给难住了。我用python编写了一个格式错误的http POST数据,当我将其粘贴到Http Live头文件中并重放请求时,100次中有100次可以正常工作。

问题是,当我尝试删除Replay头部分并只使用python来完成整个操作时,python似乎没有发送完整的POST命令。

我使用的是:

代码语言:javascript
复制
send = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
send.connect(('hostname', 80))
send.send(PostCommand)
send.close()

PostCommand大约为36000个字符。当我查看Python方法之后的堆栈时,它至少能够导致异常,但不能发送足够的数据来覆盖SEH。每次都有不同数量的信息进入web服务器。

有没有可能缺少一个参数来强制Python发送整个命令,或者只是HTTP头在后台做了一些我没有意识到的事情?

在发送之前,我正在将PostCommand写入磁盘,下面是它的样子:

代码语言:javascript
复制
POST /PATH HTTP/1.1
Host: hostname 
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://hostname/path.htm
Proxy-Connection: keep-alive
Content-Type: multipart/form-data; boundary=---------------------------1234567890
Content-Length: 139
If-Modified-Since: *

-----------------------------1234567890



AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA... (continued to 36000+)
EN

回答 2

Stack Overflow用户

发布于 2016-03-12 02:56:49

socket.send()方法将写入尽可能多的内容,直到您提供给它的缓冲区的大小。但是由于许多原因,写入的字节数可能小于缓冲区大小。

应用程序始终负责检查是否写入了完整的缓冲区,并在需要时自行重新发送缓冲区。这来自底层的C套接字库。请参阅man send(2)或有关socket.send()方法的文档。

执行此操作的方法通常是:

代码语言:javascript
复制
nsent = 0
while nsent < len(buffer):
    nsent += sock.send(buffer[nsent])
票数 0
EN

Stack Overflow用户

发布于 2016-03-12 05:36:12

我最终使用了httplib,这似乎每次都能完美地工作。

代码语言:javascript
复制
conn = httplib.HTTPConnection("hostname",80)
conn.request("POST", "/Path", PostCommand)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35947433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档