Website laden: GET- und POST-Request
Samstag, 29. Mai 2010, 14:12 Uhr | Autor: ich
Es kann verschiedene Gründe geben weshalb der Download einer Website gewünscht wird. Bei mir hat es meist damit zutun dass ich eine Schwachstelle in einer Website gefunden habe und die anfallenden Daten speichern muss , um diese einfacher auswerten zu können.
GET-Request
Eine Website zu laden, deren URL komplett mit allen übertragenen Parametern in der Adresszeile des Browsers angezeigt wird, ist mit PHP sehr einfach möglich.
$seite = file_get_contents('http://sld.tld/?x=1&y=2');
$datei = fopen('file.txt', 'w');
fputs($datei, $seite);
fclose($datei);
Die Website http://sld.tld/?x=1&y=2, bzw. der Quellcode der im Browser angezeigt werden würde, wird in der Datei file.txt gespeichert.
POST-Request
Werden in der Adresszeile allerdings nicht alle übertragenen Parameter angezeigt, dann muss schon etwas mehr Aufwand betrieben werden, um die Seite speichern zu können.
$post = array(
'var1' => 'a',
'var2' => 'b',
'var3' => 'c'
);
$context_options = array (
'http' => array (
'method' => 'POST',
'header' =>
"Content-type: application/x-www-form-urlencoded\r\n".
"Content-length: ".strlen(http_build_query($post))."\r\n".
"Referer: http://sld.tld \r\n".
"User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)\r\n",
'content' => http_build_query($post)
)
);
$context = stream_context_create($context_options);
$seite = file_get_contents(
'http://sld.tld/page',false,$context
);
$datei = fopen('file.txt', 'w');
fputs($datei, $seite);
fclose($datei);
Auch dieses Beispiel speichert die Website in der Datei file.txt ab. Die einzelnen zu übertragenen Parameter werden in dem Array der Variable $post hinterlegt. Da manchmal der Referer, also die aufrufende Seite, für die korrekte Funktion einer Seite erforderlich ist, kann auch dies hinterlegt werden.






