PHP gevorderde |
|
Je kunt een POST-request simuleren en het sessie-id (of eventuele cookies) aan de gebruiker geven. Of dat gaat werken hangt wel af van de beveiliging van de server. Een POST-request simuleren doe je (ongeveer) zo:
<?php
define('CRLF', "\r\n");
$host = "www.voorbeeld.nl";
$file = "/index.php?action=login";
$postdata = "email=" . urlencode($email) . "&password=" . urlencode($password);
$errno = 0;
$errstr = "";
$sock = fsockopen($host, 80, $errno, $errstr, 10);
if ($sock !== false) {
$out = "POST " . $file . " HTTP/1.1" . CRLF;
$out .= "Host: " . $host . CRLF;
$out .= "Content-Type: application/x-www-form-urlencoded" . CRLF;
$out .= "Content-Length: " . strlen($postdata) . CRLF . CRLF;
$out .= $postdata;
fwrite($sock, $out);
$result = "";
while (!feof($sock)) {
$result .= fread($sock, 128);
}
// $result is hier gevult met het resultaat. Door deze te bestuderen
// zou je vrij snel moeten kunnen onderscheiden waar de cookies zitten.
// Als je dan enige kennis van PHP bezit moet het geen probleem zijn
// daar het sessie-id uit te halen. Deze kun je vervolgens in de URI zetten waarnaar je doorlinkt
} else {
echo "Fout bij het openen van de socket:<br>";
echo "(" . $errno . "): " . $errstr . "<br>";
}
?>
<?php $host = "www.voorbeeld.nl"; $file = "/index.php?action=login"; $errno = 0; $errstr = ""; $sock = fsockopen($host, 80, $errno, $errstr, 10); if ($sock !== false) { $out = "POST " . $file . " HTTP/1.1" . CRLF; $out .= "Host: " . $host . CRLF; $out .= "Content-Type: application/x-www-form-urlencoded" . CRLF; $out .= "Content-Length: " . strlen($postdata) . CRLF . CRLF ; $out .= $postdata; $result = ""; $result .= fread($sock, 128); } // $result is hier gevult met het resultaat. Door deze te bestuderen // zou je vrij snel moeten kunnen onderscheiden waar de cookies zitten. // Als je dan enige kennis van PHP bezit moet het geen probleem zijn // daar het sessie-id uit te halen. Deze kun je vervolgens in de URI zetten waarnaar je doorlinkt } else { echo "Fout bij het openen van de socket:<br>"; echo "(" . $errno . "): " . $errstr . "<br>"; } ?>
Het is overigens wél nodig dat de doelwebsite het ondersteunt om via de URI sessies te veranderen. Bovendien moet er geen controle op ip/browser etc. zijn wat betreft validiteit van de sessie (i.e. geen session hijacking countermeasures). |