Problème authentification login:pwd avec requête HTTP POST
Bonjour,
J'essaye de m'authentifier via une requête POST sur une page login:pwd mais j'obtiens en retour le message : CSRF token is incorrect
Pour ce faire j'avais tout d'abord vérifier ce qui était envoyer vers le serveur en mettant un proxy en local:
POST /DVWA/login.php HTTP/1.1
Host: 192.168.1.1
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://192.168.1.1/DVWA/login.php
Cookie: security=impossible; PHPSESSID=ts5ukkrqubipdpl78ikh0udgc2
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 88
username=admin&password=password&Login=Login&user_token=4b15ab58a05f70ec713bca21d807f0a6
Voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
mport requests
URL='http://192.168.1.1/DVWA/login.php'
session = requests.Session()
session.get(URL)
#cookie recovering
cookies = session.cookies.get_dict()
user_token = requests.get(URL).text
print user_token
#we look for the the position of the work 'token' in the string
start_index = user_token.find('token')
#I add +14 to parse at the beginning of the token value
start_index=start_index+14
#each character of the string is lined feeded
#I use the line feed as separator to reaasemble the string
#I use +32 because the token is 32 character long
anti_csrf = user_token[start_index:start_index+32].split('\n')[0]
#I encapsulate my value in quotes
anti_csrf="'"+anti_csrf+"'"
print "\nANTI-CSRF token recovered:"
print anti_csrf
#data to send via POST METHOD
data = {'username':'admin','password':'password','user_token':anti_csrf,'Login':'Login'}
#authenticate on the website
auth = requests.post(URL, cookies=cookies, data=data)
print auth.text |
Je comprend pas pq j'obtiens cette erreur alors que le token que je récupère est identique à celui envoyé par le serveur ?
Peut-être je l'envois mal ?
Cdlt