Protocolo Gopher

Protocolo Gopher

Este artículo se refiere al margen del artículo


¿Qué es el protocolo Gopher?

Definición : Gopher es un sistema de búsqueda de información muy conocido en Internet que organiza los archivos de Internet en un índice determinado, que puede llevar fácilmente a los usuarios de un lugar a otro de Internet. Antes de la llegada de la WWW, Gopher era la herramienta de recuperación de información más importante en Internet, y el sitio Gopher también era el sitio más importante, utilizando el puerto tcp70 . Pero después de la aparición de WWW, Gopher perdió su antigua gloria. Ahora está básicamente desactualizado y la gente ya casi no lo usa;

El protocolo gopher admite el envío de solicitudes GET y POST : el paquete de solicitud get y el paquete de solicitud posterior se pueden interceptar primero para formar una solicitud que se ajuste al protocolo gopher. El protocolo gopher es el protocolo más poderoso en el uso de ssrf

Restricciones : restricciones sobre el uso del protocolo gopher en varios lenguajes de programación

Formato del protocolo Gopher :

URL:gopher://<host>:<port>/<gopher-path>_后接TCP数据流
  • El puerto predeterminado de Gopher es 70
  • Si inicia una solicitud de publicación, se requiere% 0d% 0a para el retorno de carro y el avance de línea. Si hay varios parámetros, el & entre los parámetros también debe estar codificado en URL.

Gopher envía una solicitud HTTP GET:

Abra un monitor nc en el lado de las ventanas:

¿No sabes cómo usar nc? Portal

imagen-20210326201104051

En kali, use el protocolo gopher para enviar una solicitud de obtención a Windows:

C:\root> curl gopher://192.168.1.120:8989/qianxun

imagen-20210326201719594

El lado de las ventanas recibió la respuesta de inmediato, pero el primer personaje fue devorado.

C:\root> curl gopher://192.168.1.120:8989/suibianxie

imagen-20210326201949083

Siempre lo mismo. Esto se debe a que se agrega un carácter (cualquier carácter) después de la URL del protocolo gopher.

Entonces, ¿cómo enviar una solicitud HTTP? Por ejemplo, una solicitud GET. En este momento, pensamos, ¿no puede ser suficiente enviar un paquete HTTP original directamente? El envío de datos HTTP en el protocolo gopher requiere los siguientes tres pasos:

1. Construya el paquete de datos HTTP
2. Codificación de URL, reemplace el retorno de carro y cambie el comportamiento% 0d% 0a
3. Envíe el protocolo gopher

Prepare un código PHP:

<?php
	echo "Hello ,".$_GET["name"]."!";
?>

Un paquete HTTP de tipo GET es el siguiente:

GET /ssrf/test/get.php?name=Qianxun HTTP/1.1
Host: 192.168.1.120

Después de la codificación de URL:

curl gopher://192.168.1.120:80/_GET%20/ssrf/test/get.php%3fname=Qianxun%20HTTP/1.1%0d%0AHost:%20192.168.1.120%0d%0A

imagen-20210326203426493

gopher://主机:端口//占位符+http头(需要%0d%0A回车换行)

Hay tantos problemas al convertir a codificación de URL

1. El signo de interrogación (?)
Debe transcodificarse a la codificación de URL, es decir,% 3f. 2. El retorno de carro y el avance de línea deben convertirse en% 0d% 0a, pero si usa la herramienta para transferir directamente, solo be% 0a
3. Al final del paquete HTTP Para agregar% 0d% 0a, significa el final del mensaje (puede estudiar el final del paquete HTTP para obtener más detalles)


Gopher envía una solicitud HTTP POST:

El código de post.php es:

<?php
	echo "Hello ,".$_POST["name"]."!"."\n";
?>

Antes de enviar una solicitud POST, observe el formato del paquete POST

Cabe señalar que la solicitud POST tiene 4 parámetros como parámetros necesarios:

POST /ssrf/test/post.php HTTP/1.1
host:192.168.1.120
Content-Type:application/x-www-form-urlencoded
Content-Length:12

name=Qianxun

Luego, codificaremos en URL el paquete POST anterior y lo cambiaremos al protocolo gopher

curl gopher://192.168.1.120:80/_POST%20/ssrf/test/post.php%20HTTP/1.1%0d%0AHost:192.168.1.120%0d%0AContent-Type:application/x-www-form-urlencoded%0d%0AContent-Length:11%0d%0A%0d%0Aname=Qianxun%0d%0A

Preste atención a los caracteres de marcador de posición detrás de la URL de Gopher.

Después de usar curl para iniciar una solicitud POST de gopher, el resultado es:
imagen-20210326213007246

Supongo que te gusta

Origin blog.csdn.net/qq_43665434/article/details/115255263
Recomendado
Clasificación