我正在处理的应用程序试图从目标服务器上找到的无法识别的端口执行HTTP请求。这是Web应用程序扫描程序的一部分。
我遇到的问题是,如果有问题的端口是SMTP服务器,我会得到一个成功的结果,我真的期待(甚至希望!)失败。
这是卷曲的表现:
root@lpdev02:/home/dave# curl -k https://XX.XXX.XX.XXX:465/
220 lpmail01.outpost24.com ESMTP Postfix
221 2.7.0 Error: I can break rules, too. Goodbye.
root@lpdev02:/home/dave#
在libcurl中,我对curl_easy_perform()的调用返回CURLE_OK。我随后打电话给
curl_easy_getinfo(this->curl, CURLINFO_RESPONSE_CODE, &status );
给出值0,标头缓冲区为空。
这甚至在我把这个调用之前放到_perform():
之后 // allow ONLY HTTP/HTTPS protocols
ret = curl_easy_setopt(this->curl, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS );
ret = curl_easy_setopt(this->curl, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS );
curl认为它正在获得HTTP响应吗?没有状态行,所以不应该。
curl是否认为它正在获得SMTP响应?如果是,那么状态代码应该是220(或221?),但是协议限制不应该禁止,所以_perform()应该返回错误。
任何有用的反馈都将不胜感激!