Aziz Ozbek
WordPress Expert from Zürich
submit post with php curl

PHP cURL Submit Form Post Method (Session Entführung)

In diesem Artikel werden wir sehen, wie man den Inhalt der Zielwebsite erhält, indem man mit Hilfe von PHP cURL Form Post schickt. Normalerweise ist es einfach, Inhalt der Website zu erhalten, aber wenn das Zielwebsite ein CSRF (Cross Site Request Forgery) Defender hat oder etwas, das mit dem aktiven Sitzungs-ID mit Besuchersitzung gleichsetz, können Sie sich nicht automatisch erfolgreich anmelden. In diesem Fall verwenden wir den Session-Entführung Trick, um die Ziel-Website zu täuschen. Zuerst sehen wir, was Cross Site Request Forgery ist und wie es funktioniert?

What is Cross Site Request Forgery, csrf

Was ist Cross Site Request Forgery?

Cross-Site Request Forgery (CSRF) ist ein Angriff, der einen Endbenutzer dazu zwingt, unerwünschte Aktionen in einer Webanwendung auszuführen, in der er sich schon authentifiziert hat. CSRF-Angriffe richten sich speziell gegen zustandswechselnde Anforderungen, nicht gegen Datendiebstahl, da der Angreifer keine Möglichkeit hat, die Antwort auf die gefälschte Anforderung zu sehen. Lesen Sir mehr darüber…

Was ist Session Hijacking?

Während des Session-Hijackings wird eine gültige Sitzung von einem Angreifer entführt. Nach einer erfolgreichen Entführung kann der Angreifer im schlimmsten Fall die Identität des Benutzers übernehmen und die Anwendung in seinem Namen verwenden.

Lesen Sie mehr darüber…

Session_Hijacking_php curl
Session Hijacking

Wie es funktioniert ?

  1. Allererst, wenn Sie nicht wissen wie man Quellen Code einer Website durchschauen kann, oder wenn Sie sicher sein wollen, dass Sie alle Post Felder vollständig bekommen haben, öffnen Sie die Zielwebsite und ändern Sie action="" dieses Parameter zu ihrer curl.php seite, wie ich unten gezeigt habe. Mit dem folgenden Code bekommen wir alle POST Infos von Zielwebsite.
    if($_GET){foreach ($_POST as $key => $value) echo htmlspecialchars($key)." = ".htmlspecialchars($value)."n";}

form action redirect to localhost


  1. Jetzt haben Sie alle Post Felder von der Zielwebsite. Schauen Sie wie sie name="" Parameters geschrieben haben. Am meisten sind sie “username” und “password“. Darum habe ich auch in mein Code so geschrieben. Wenn sie anders als “username” und “password” sind, ändern Sie die Array Parameters in linie 11.
    $postValues = array(
    'username' => $name,
    'password' => $pass
    );
  2. Dann schauen Sie action="" wohin dieses Form Infos gehen, am meisten schicken sie zu gleicher Seite, wenn es bei ihrer Zielwebsite anders ist, schreiben Sie in $LOGIN_ACTION_URL = "" das gleiche Address, wo in action=”” ist. Sonst lassen Sie die $LOGIN_ACTION_URL = $loginForm und $LOGIN_FORM_URL = $loginForm gleich.
  3. Jetzt können Sie eine Datei erstellen, die die Sitzungsinformationen enthält. Ich habe es nicht in mein Code geschrieben, dass es sich automatisch erstellt. Denn wenn Sie es unter Linux ohne Administratorrechte verwenden, kann es nicht automatisch erstellt werden. Aber wenn Sie es automatisch erstellen möchten, können Sie folgenden Code statt $COOKIE_FILE = 'cookie.txt'; verwenden.
    if(!file_exists("cookie.txt")){
    $COOKIE_FILE = 'cookie.txt';
    }else{
    $COOKIE_FILE = fopen("cookie.txt", "w");
    }
  4. Jetzt wir haben alles, was wir in unserem Function verwenden sollen. (Neben jeder anderen Codes habe ich gleich kleine Kommentare geschrieben)
    $username = ""; // your username
    $password = ""; // your password
    $formPage = ""; // login form page
    $indexseite = ""; //after login which page do we wanna go
    $get = get_curl($username, $password, $formPage, $indexseite);

    $formPage das ist, wo Login Form sich findet.
    $indexseite Das ist die Seite, die Sie nachdem erfolgreiche Authentication sehen wollen.

  5. Kopieren Sie einfach die Codes, die unten sind. Oder installieren Sie obigen PHP Datei.
  6. Viel Spass.
Rating: 5.0/5. From 8 votes.
Please wait...

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert