http协议

请求头部

0464489901B424F4BD80FAE602DAA329

响应信息

状态码

403状态码表示服务请求被禁止,这一类返回码并不代表目标目录真的 无法访问,很多时候是因为攻击者没有命中正确的资源名称。例如, 通常情况下,上传文件往往存储在upload目录下(具体名称并不绝 对),如果直接访问upload目录,会返回403错误;但如果访问upload 目录下的具体文件,且该文件确实存在,那么返回的HTTP状态码为 200。此外,403错误也可能是因为参数错误而导致的。因此,如果 HTTP返回码为403,并不意味着该文件不存在,还需要进一步处理, 例如在该目录下继续进行目录探测,或者进行参数爆破。

请求方法(put方法上传一句话木马)

put方法上传一句话木马,然后用蚁剑链接。

补充:http的请求方法:

在 HTTP/1.1 中提供了一系列方法以便我们向服务器发送不同类型的请求,需要注意的是这些方法名称都是区分大小写的,而且必需使用大写字母。具体的方法名称和说明如下表所示:

image-20240915140840152

  1. GET方法
    GET 方法可以根据请求行中 URL 部分的参数从服务器中获取数据。例如我们在浏览器中打开一个连接,然后就会在浏览器看到相应的页面,这一过程就是通过 GET 方法实现的。另外,使用 GET 方法还可以在 URL 参数中携带一些字符串类型的参数一同传输给服务器,由于是在 URL 中携带的参数,我们可以在浏览器的地址栏直观的看到,所以安全性较低,一般只用来传递一些没有风险的数据。而且 GET 方法对于所传输数据的大小也有限制,一般不能超过 2kb。

以访问 http://www.csdn.net/hello.html 这个页面为例,客户端使用 GET 方法发起的 HTTP 请求如下所示:

1
2
3
4
5
6
7
8
9
10
GET /hello.html HTTP/1.1
Host: www.csdn.net
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9

针对上面的请求,服务器的响应如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
HTTP/1.1 200 OK
Server: Tengine
Last-Modified: Thu, 17 Sep 2020 13:07:28 GMT
ETag: "34aa387-d-1568eb00"
Vary: Authorization,Accept
Date: Thu, 17 Sep 2020 13:32:54 GMT
Accept-Ranges: bytes
Content-Length: 68
Content-Type: text/html
Connection: Closed

<!DOCTYPE html>
<html>
<body>
<h1>Hello,CSDN!</h1>
</body>
</html>
  1. HEAD方法
    HEAD 方法在功能上与 GET 方法相似,不同之处在于使用 HEAD 方法服务器只会返回响应行和响应头,不会返回响应体。同样以访问 http://c.biancheng.net/hello.html 这个页面为例,客户端使用 HEAD 方法发起的 HTTP 请求如下所示:
1
2
3
4
5
6
HEAD /hello.html HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
Host: www.csdn.net
Accept-Language: zh-CN,zh;q=0.9
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

针对 HEAD 方法发起的请求,服务器的响应如下所示:

1
2
3
4
5
6
7
8
9
10
HTTP/1.1 200 OK
Server: Tengine
Last-Modified: Thu, 17 Sep 2020 13:07:28 GMT
ETag: "34aa387-d-1568eb00"
Vary: Authorization,Accept
Date: Thu, 17 Sep 2020 13:32:54 GMT
Accept-Ranges: bytes
Content-Length: 0
Content-Type: text/html
Connection: Closed

通过服务器的响应结果可以看出,服务器在返回了响应行和响应头之后,并没有返回响应体。

3.POST方法
当我们需要将一些信息发送给服务器的时候就需要用到 POST 方法了,比如在提交表单或者上传文件的时候。与 GET 方法不同,POST 方法会将返送给服务器的信息放到请求体中,所以比 GET 方法更加安全。而且,POST 方法对于传输数据的大小和类型也没有限制。以提交表单为例,使用 POST 方法向服务器发起的 HTTP 请求如下所示:

1
2
3
4
5
6
7
8
9
10
POST /login.php HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
Host: c.biancheng.net
Content-Type: text/xml; charset=utf-8
Content-Length: 40
Accept-Language: zh-CN,zh;q=0.9
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

username=www.csdn.net&password=123456

上面的请求发送成功后,服务器端的脚本 login.php 会根据传递的数据做出相应的处理,并对客户端做出响应,响应结果如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
HTTP/1.1 200 OK
Date: Thu, 17 Sep 2020 13:32:54 GMT
Server: Tengine
Last-Modified: Thu, 17 Sep 2020 13:07:28 GMT
ETag: "34aa387-d-1568eb00"
Vary: Authorization,Accept
Accept-Ranges: bytes
Content-Length: 51
Content-Type: text/html
Connection: Closed

<html>
<body>

<h1>登陆成功</h1>

</body>
</html>
  1. PUT方法
    使用 PUT 方法将数据传输到服务器,并将其存储在 URL 所指定的位置。假如我们要将 hello.html 文件的内容存储到服务器的根目录下,那么客户端发送的 HTTP 请求应该是下面这样的:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
PUT /hello.html HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
Host: www.csdn.net
Accept-Language: zh-CN,zh;q=0.9
Connection: Keep-Alive
Content-type: text/html
Content-Length: 182

<html>
<body>

<h1>Hello,CSDN!</h1>

</body>
</html>

这时服务器会在根目录下创建 hello.html 文件,并将请求中传输的数据保存到这个文件中,执行成功后会向客户端做出如下所示的响应:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
HTTP/1.1 201 Created
Date: Thu, 17 Sep 2020 13:32:54 GMT
Server: Tengine
Content-type: text/html
Content-length: 30
Connection: Closed

<html>
<body>

<h1>The file was created.</h1>

</body>
</html>
  1. DELETE方法
    DELETE 方法可以请求服务器删除 URL 所指定的文件。假如要删除上面操作中在服务器根目录创建的 hello.htnl 文件,那么客户端的请求应该是下面这样的:
1
2
3
4
5
DELETE /hello.html HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
Host: www.csdn.net
Accept-Language: zh-CN,zh;q=0.9
Connection: Keep-Alive

服务器在收到上面的请求后,会删除根目录下的 hello.html 文件,并对客户端做出如下响应:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
HTTP/1.1 200 OK
Date: Thu, 17 Sep 2020 13:32:54 GMT
Server: Tengine
Content-type: text/html
Content-length: 30
Connection: Closed

<html>
<body>

<h1>URL deleted.</h1>

</body>
</html>
  1. CONNECT方法
    客户端使用 CONNECT 方法可以与 URL 所指向的目标服务器建立 HTTP 连接。假如要与域名(c.biancheng.net)所指向的服务器建立连接,客户端的请求如下所示:
1
2
CONNECT www.csdn.net HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36

连接建立成功后,服务器会对客户端做出如下响应:

1
2
3
HTTP/1.1 200 Connection established
Date: Thu, 17 Sep 2020 13:32:54 GMT
Server: Tengine
  1. OPTIONS方法
    当我们要使用本节中介绍的某个方法向服务器发送请求,但又不确定服务器是否支持此请求时,可以使用 OPTIONS 方法来查看服务器所支持的 HTTP 方法。在使用 OPTIONS 方法发送 HTTP 请求时,既可以指定具体的 URL,也可以使用星号(*)来代表整个服务器。假如要查看域名(c.biancheng.net)所指向服务器所支持的 HTTP 方法,客户端的请求如下所示:
1
2
OPTIONS * HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36

服务器的响应如下所示:

1
2
3
4
5
HTTP/1.1 200 OK
Date: Thu, 17 Sep 2020 13:32:54 GMT
Server: Tengine
Allow: GET,HEAD,POST,OPTIONS,TRACE
Content-Type: httpd/unix-directory

在服务器返回的响应头中,Allow 一行就是该服务器支持的所有 HTTP 方法。

  1. TRACE方法
    服务器在收到客户端使用 TRACE 方法发送的 HTTP 请求时,会将收到的请求报文放到响应体中返回给客户端。TRACE 方法主要在程序的开发测试阶段使用,使用 TRACE 方法可以查看请求在传递到服务器的过程中是否被篡改或破坏等等。客户端的请求示例如下所示:
1
2
3
TRACE / HTTP/1.1
Host: www.csdn.net
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36

服务器的响应如下所示:

1
2
3
4
5
6
7
8
9
10
HTTP/1.1 200 OK
Date: Thu, 17 Sep 2020 13:32:54 GMT
Server: Tengine
Connection: close
Content-Type: message/http
Content-Length: 166

TRACE / HTTP/1.1
Host: www.csdn.net
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safar