9
votes

Essayer de se connecter au site ASPX en utilisant CURL?

J'essaie de vous connecter à cette URL:

Request URL:http://www.kalahari.com/marketplace/default.aspx
Request Method:POST
Status Code:302 Found
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:2596
Content-Type:application/x-www-form-urlencoded
Cookie:VISITORID=9840A7E31683480CB19A66FB8AA73BFC; ASP.NET_SessionId=foous3ftij3os2vvr1wbm3mm; __utma=160092839.590473234.1362995010.1362995010.1362995010.1; __utmc=160092839; __utmz=160092839.1362995010.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); _SUPERFLY_nosample=1; shopperName=; signin=0; kalahariShopperId=922859656760417F99E83D5B1427115F; surfLang=ENG; prefLanguage=en-ZA; _chartbeat2=1yx62ww1m7xz1o84.1360134968807.1363000295875.00000000000001
Host:www.kalahari.com
Origin:http://www.kalahari.com
Referer:http://www.kalahari.com/marketplace/default.aspx
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22
Form Dataview sourceview URL encoded
__EVENTTARGET:
__EVENTARGUMENT:
__VIEWSTATE:/wEPDwULLTEzODYxODcwMTMPZBYCZg9kFgJmD2QWAgIBD2QWCAICD2QWBAIDDw8WAh4LTmF2aWdhdGVVcmwFNH4vcGlwZWxpbmUvc2lnbmluLmFzcHg/UmV0dXJuVVJMPS9zZWN1cmUvbWFya2V0cGxhY2VkZAIHDxYCHgdWaXNpYmxlaBYCAgEPDxYCHwFoZGQCBA9kFgICAQ9kFgICAQ8WAh8BaBYCAgEPZBYQAgEPDxYGHghDc3NDbGFzcwULYWN0aXZlX2xpbmseB0VuYWJsZWRnHgRfIVNCAgJkZAIDDw8WBh8CBQVsaW5rcx8DZx8EAgJkZAIFDw8WBh8CBQ1kaXNhYmxlX2xpbmtzHwNoHwQCAmRkAgcPDxYGHwIFDWRpc2FibGVfbGlua3MfA2gfBAICZGQCCQ8PFgYfAgUNZGlzYWJsZV9saW5rcx8DaB8EAgJkZAILDw8WBh8CBQ1kaXNhYmxlX2xpbmtzHwNoHwQCAmRkAg0PDxYGHwIFDWRpc2FibGVfbGlua3MfA2gfBAICZGQCDw8PFgYfAgUNZGlzYWJsZV9saW5rcx8DaB8EAgJkZAIFD2QWAgIBD2QWBgIJDxAPZBYCHgdvbkNsaWNrBYQBamF2YXNjcmlwdDpWYWxpZGF0ZUxvZ2luUmFkaW9CdG5ZZXMoY3RsMDBfY3RsMDBfY3BsaE1haW5fY3BsaENvbnRlbnRfcmRsUGFzc3dvcmRZZXMsY3RsMDBfY3RsMDBfY3BsaE1haW5fY3BsaENvbnRlbnRfcmRsUGFzc3dvcmRObyk7ZGRkAgsPEA9kFgIfBQWDAWphdmFzY3JpcHQ6VmFsaWRhdGVMb2dpblJhZGlvQnRuTm8oY3RsMDBfY3RsMDBfY3BsaE1haW5fY3BsaENvbnRlbnRfcmRsUGFzc3dvcmRZZXMsY3RsMDBfY3RsMDBfY3BsaE1haW5fY3BsaENvbnRlbnRfcmRsUGFzc3dvcmRObyk7ZGRkAhUPD2QWAh8FBdMBamF2YXNjcmlwdDpWYWxpZGF0ZUxvZ2luKCdjdGwwMF9jdGwwMF9jcGxoTWFpbl9jcGxoQ29udGVudF9sYmxSZXN1bHQnLGN0bDAwX2N0bDAwX2NwbGhNYWluX2NwbGhDb250ZW50X3R4dFBhc3N3b3JkLGN0bDAwX2N0bDAwX2NwbGhNYWluX2NwbGhDb250ZW50X3JkbFBhc3N3b3JkWWVzLGN0bDAwX2N0bDAwX2NwbGhNYWluX2NwbGhDb250ZW50X3JkbFBhc3N3b3JkTm8pO2QCBg9kFgICBQ8PFgIfAAUafi9waXBlbGluZS9vcmRlcl9saXN0LmFzcHhkZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAwUvY3RsMDAkY3RsMDAkY3BsaE1haW4kY3BsaENvbnRlbnQkcmRsUGFzc3dvcmRZZXMFLmN0bDAwJGN0bDAwJGNwbGhNYWluJGNwbGhDb250ZW50JHJkbFBhc3N3b3JkTm8FLmN0bDAwJGN0bDAwJGNwbGhNYWluJGNwbGhDb250ZW50JHJkbFBhc3N3b3JkTm99/wuPOuNOonYg5XWvf3RGR1YVkw==
__EVENTVALIDATION:/wEWDQLsuI7QDgKnpLoxApD7nfEPAvLAqqUGAp35/akJAqGiqqYPAsXC5NUHAsHJ5OMCAovxoc8LArq0mqAKApm+rVoC9dLe0Q8C5IvEsAlYqPIdcrZvBZcvYav7ATMf4Nhbfg==
ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInEmail:XXXXXXXXX
ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInPasswordTextNormal:Password
ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInPassword:XXXXXXXXXXX
ctl00$ctl00$ucMarketPlaceSupportNavigation$btnSigninTop:Sign in
ctl00$ctl00$cplhMain$cplhContent$txtEmail:Email address
ctl00$ctl00$cplhMain$cplhContent$rdlPasswordYes:rdlPasswordYes
ctl00$ctl00$cplhMain$cplhContent$txtPasswordTextNormal:Password
ctl00$ctl00$cplhMain$cplhContent$txtPassword:
ctl00$ctl00$cplhMain$cplhContent$hdnEmailDefault:Email address
ctl00$ctl00$cplhMain$cplhContent$hdnPasswordDefault:Password
Response Headersview source
Cache-Control:private, no-cache="Set-Cookie"
Content-Length:146
Content-Type:text/html; charset=utf-8
Date:Mon, 11 Mar 2013 11:11:57 GMT
Etag:
Location:/marketplace/default.aspx
Server:Microsoft-IIS/6.0
Set-Cookie:.KALAHARINETAUTH=782A6F442823F8148FB113BA0BAF3A9A8DE253762A4ACFAA5E911E4721166F0EEC6A1891755133AADD28654CF0DAE3880CC2B84260F0B915C07897909CFB071495AF8EF05D1BD678DEE1933FCB08E5ECB1CF76462900681C7D4AE963C151E3079D95FBAD6466F0528787455A951D5EC0DA26F0E6CAA341E4C717D7F3BC01D182F488F47F; domain=.kalahari.com; path=/; HttpOnly
Set-Cookie:surfLang=ENG; domain=.kalahari.com; expires=Sat, 11-Mar-2023 11:11:57 GMT; path=/
Set-Cookie:prefLanguage=en-ZA; domain=www.kalahari.com; path=/
Set-Cookie:signin=1; domain=kalahari.com; path=/
Set-Cookie:tempshopperid=922859656760417F99E83D5B1427115F; domain=kalahari.com; path=/
Set-Cookie:kalahariShopperId=54B14971F72D426BA02DEF3A3D99DC93; domain=kalahari.com; expires=Sun, 17-Jan-2038 22:00:00 GMT; path=/
Set-Cookie:shopperName=XXXX; domain=kalahari.com; path=/
Set-Cookie:kalahariShopperEmail=XXX@XXXX.XXX; domain=kalahari.com; path=/
X-AspNet-Version:2.0.50727
X-Powered-By:ASP.NET


0 commentaires

3 Réponses :


1
votes

Ceci est un jeton CRSF très probablement. Vous aurez l'appel que la page utilise ensuite la valeur renvoyée dans votre demande de connexion. Dropbox utilise un processus similaire. Si vous attrapez le script DropBox Upploader de https://github.com/jakajancar/dropboxduploader/ vous pouvez voyez comment ça fait cela.


0 commentaires

22
votes

Introduction

La raison possible Pourquoi votre script ne fonctionne pas comme suit

  • manquant __ ViewState
  • manquant __ eventvalidation
  • Agent utilisateur non valide
  • Utilisation CTL00 $ CTL00 $ UCMarketplacsupportNavigation $ txtmptopsigninpasswordtextNormal Pour mot de passe au lieu de CTL00 $ CTL00 $ UCMarketplacsInupportNavigation $ TXTMPTROSIGNIPASSWORD
  • Field Post incomplet
  • Demande de courbure en double
  • manquant Coolie dans le processus de connexion

    une demande de serveur typique

    Une demande longue complète ressemble à ceci xxx

    Pour utiliser curl xxx

    testé et fonctionne parfaitement bien ...


4 commentaires

Pour ajouter à cela, __ eventValidation est délibérément destiné à empêcher le type de raclage que vous tentez. Une nouvelle valeur sera générée chaque fois que tout ce qui est exécuté sur le serveur, non seulement lorsque l'ensemble de la page rend, qui peut inclure la modification des valeurs de boîte déroulante individuelle par exemple.


@Baba, j'ai essayé votre code et obtenir une erreur interne. Devrais-je ajouter les valeurs du champ caché moi-même ou il sera automatiquement rempli sur chargé?


Il montre que __ eventValidation est invalide; @Imsop a raison. Mais comment résoudre-le?


C'est génial!! :RÉ



2
votes

Je voulais essayer d'essayer de faire fonctionner votre code, voir ci-dessous. J'ai quelque var_dump et commentaires dans le code de ce que je fais.

<?php
$username     = 'test@example.com';
$password     = 'example';

$loginUrl     = 'http://www.kalahari.com/marketplace/default.aspx';

//on windows server you need full path or its not even used.
$cookie  = dirname(__FILE__) . '\cookies1.txt';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $loginUrl );
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE );
curl_setopt($ch, CURLOPT_COOKIEJAR , $cookie);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_HEADER, FALSE );
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$ret = curl_exec($ch); //access login page

//check the contents of the cookie file. the sessionID, visitorID and kalaharishooperID should be the same with each refresh.
var_dump(implode('', file($cookie)));

//now get the viewstate from the value
//could be better with regex or anything, but this works.
$content = explode('value="', stristr($ret, 'id="__VIEWSTATE"'));
$viewstate = substr($content[1], 0, strpos($content[1], '"'));
var_dump($viewstate);


//now get the EVENTVALIDATION from the value
//could be better with regex or anything, but this works.
$content = explode('value="', stristr($ret, 'id="__EVENTVALIDATION"'));
$validation = substr($content[1], 0, strpos($content[1], '"'));
var_dump($validation);

//define post fields
    //i removed all fields that are not required for the post
$postfields = array(
    "__VIEWSTATE" => rawurlencode($viewstate),
    "__EVENTVALIDATION" => rawurlencode($validation),
    "ctl00%24ctl00%24ucMarketPlaceSupportNavigation%24txtMPTopSignInEmail" => rawurlencode($username),
    "ctl00%24ctl00%24ucMarketPlaceSupportNavigation%24txtMPTopSignInPasswordTextNormal" => "Password",
    "ctl00%24ctl00%24ucMarketPlaceSupportNavigation%24txtMPTopSignInPassword" => rawurlencode($password),
    "ctl00%24ctl00%24ucMarketPlaceSupportNavigation%24btnSigninTop" => "Sign+in",
);
var_dump($postfields);

    //I created the string myself for the post, else I got an error because we already encoded the variable names.
$p = "";
foreach($postfields as $k=>$v) {
    $p .= $k.'='.$v.'&';
}


//do the new post
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $p);
$ret = curl_exec($ch);//Get result after login page.

    //this contains 'You have entered an invalid password' so it works as expected.
var_dump($ret);

?>


1 commentaires

rawurlencode () résultera "Les informations de l'état sont invalides pour cette page et peuvent être corrompues".