Bonjour à tous,
J'essaie de resoudre un challenge web qui est le suivant :
On se connecte sur une url : http://xxxxxx/epreuve.php
Une page avec une suite de caractere codée en base64 s'affiche
Il faut décrypter cette suite et poster la reponse sur une url : http://xxxxx/verif.php?reponse=yyyyyyyy
J'ai donc ecris ce bout de code : (j'ai flooté l'url afin de ne pas spoil ce challenge)
1 2 3 4 5 6 7 8 9 10 11 12 13
| #!/usr/bin/env python
# -*- coding: utf-8 -*-
import base64
import urllib
import webbrowser
page=urllib.urlopen('http://xxxxxxxx/epreuve.php')
page2 ='http://xxxxxxxxxxxx/verif.php?='
strpage=page.read()
print(strpage)
decrypt =base64.b64decode(strpage)
print(decrypt)
retouradr=page2+decrypt
webbrowser.open(retouradr) |
Ce code marche bien :
1 2 3
| # python capture.py
XHgyOFx4MVx4NDRceDUyXHg1M1x4NDRceDlceGJceDEwXHg0NFx4MFx4MVx4NDRceDUxXHg1MFx4NDRceDE0XHg1XHgxN1x4MTdceDFceDQ0XHg1XHg0NFx4MTZceDFceDEwXHhiXHgxMVx4MTZceGFceDFceDE2XHg0NFx4NTBceDVkXHg0NFx4NVx4NDRceDhceDVceDQ0XHgxNFx4NVx4M1x4MVx4NDRceDBceDFceDQ0XHg1M1x4NTdceDQ0XHgxMlx4MVx4MTZceGRceDJceGRceDdceDVceDEwXHhkXHhiXHhhXHg0NFx4NWRceDUwXHg0NFx4MTRceGJceDExXHgxNlx4NDRceGJceDZceDEwXHgxXHhhXHhkXHgxNlx4NDRceDhceDFceDQ0XHg1NVx4NTFceDQ0XHg5XHhiXHgxMFx4NDRceDUyXHg1MVx4NDRceDBceDFceDQ0XHgxNFx4NVx4MTdceDE3XHgxXHg0NFx4MVx4MTdceDEwXHg0NFx4NWVceDQ0XHgxXHhmXHgxN1x4MQ==
\x28\x1\x44\x52\x53\x44\x9\xb\x10\x44\x0\x1\x44\x51\x50\x44\x14\x5\x17\x17\x1\x44\x5\x44\x16\x1\x10\xb\x11\x16\xa\x1\x16\x44\x50\x5d\x44\x5\x44\x8\x5\x44\x14\x5\x3\x1\x44\x0\x1\x44\x53\x57\x44\x12\x1\x16\xd\x2\xd\x7\x5\x10\xd\xb\xa\x44\x5d\x50\x44\x14\xb\x11\x16\x44\xb\x6\x10\x1\xa\xd\x16\x44\x8\x1\x44\x55\x51\x44\x9\xb\x10\x44\x52\x51\x44\x0\x1\x44\x14\x5\x17\x17\x1\x44\x1\x17\x10\x44\x5e\x44\x1\xf\x17\x1 |
Je recupere bien la chaine de caractere en base64 et la conversion me donne une suite en hexa que je reinjecte comme reponse dans l'url de verif.
La page web de verif s'ouvre bien avec ma concatenation.
Mais.....le site m'indique en retour :Vous devez passer par epreuve.php pour pouvoir accèder à cette page.
J'en deduis donc que le site doit fonctionner avec des cookies pour verifier que l'on a ouvert la page web "epreuve.php"avec un browser avant de poster une réponse.
J'ai donc inseré un :
webbrowser.open('http://xxxxxxxx/epreuve.php')
avant urllib.urlopen('http://xxxxxxxx/epreuve.php')
Mais cela ne fonctionne pas car a chaque interrogation de cette page la chaine de caractere change.
J'en deduis donc que webbrowser.open et urllib.open emettent chacun d'eux une requete
Mon pb est donc le suivant :
Si j'ouvre d'abord la page web via navigateur avec webbrowser, je ne peux plus enchainer avec un urllib.urlopen car la suite de caractere qui sera recupérée sera differente de celle apparaissant sur mon navigateur (car nouvelle requette).
Si je n'ouvre pas la page avec un navigateur, l'URL de controle refuse ma reponse au titre que je ne suis pas passé d'abord par la page épreuve....
Une idée sur le comment recoudre cela ?
Merci à tous pour votre aide.
Partager