login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Nieuw spel (Opgelost)

Offline vinTage - 29/08/2007 00:23 (laatste wijziging 29/08/2007 00:24)
Avatar van vinTageNieuw lid Om l33t hackertjes wat van *ontspanning te voorzien, bestaat er nu een applicatie die je MAG kraken, sterker nog, het is zelfs de bedoeling, dus geef elkaar hints hoe je een object decompiled, hoe je extern post en evt kan klooien met variabelen en of sessie's.

Speel het spel hier

Je zou deze post ook anders kunnen interpreteren maar dat mag niet 

Vergeet dus niet om elkaar in dit topic tips te geven!

*zie topic categorie

23 antwoorden

Gesponsorde links
Offline kilian - 29/08/2007 00:35
Avatar van kilian Lid Komt er niet genoeg reactie? :d
Offline Stijn - 29/08/2007 00:36 (laatste wijziging 29/08/2007 00:38)
Avatar van Stijn PHP expert
Citaat:
l33t hackertjes
3/4 weet nog niet eens wat een object is laat staan decompilen... en is het niet swf decompilen ipv object compilen?

Aangezien jij toch niet luistert naar mijn pm zal ik het een shot geven, kom achteraf niet janken als ik je server kapot gedaan heb .

[edit]

Je maakt dus gebruik van SWFObject en van MD5 om de code te "verbergen"

  1. captcha.swf?checkOne=cc50da69651024a8864573c63ea47e10
Offline vinTage - 29/08/2007 00:40
Avatar van vinTage Nieuw lid (k) 
Offline Stijn - 29/08/2007 00:41
Avatar van Stijn PHP expert Kleine voetnoot: als je die captcha wilt gebruiken moet je ervoor zorgen dat mensen Javascript enabled hebben .
Offline vinTage - 29/08/2007 00:43
Avatar van vinTage Nieuw lid Dat moet ik idd nog even in de div ploppen, ga ik doen.

Zonder js, geen captcha, dus bots hebben zoieso al minder/weing kans ;)
Offline Stijn - 29/08/2007 00:49
Avatar van Stijn PHP expert Is een feit. Maar goed zeg of ik correct ben:

In PHP maak je een random string aan en geef je die mee aan je flash object maar op de één of andere manier geef je die mee aan je flash film en die gehashde string is gewoon ter controle.

Of je kan met AS3 al PHP sessions besturen...
Offline vinTage - 29/08/2007 00:52
Avatar van vinTage Nieuw lid Dit is ECHT as2 (sloop de swf maar)
Natuurlijk is de fun al gauw weg als ik alles ga voorzeggen. 
Offline Stijn - 29/08/2007 00:54 (laatste wijziging 29/08/2007 01:00)
Avatar van Stijn PHP expert Ik gok dus op mijn eerste redenering.

alleen, hoe zou ik hieraan beginnen... 
Offline vinTage - 29/08/2007 01:03
Avatar van vinTage Nieuw lid geef nooit op  
Jij kan toch wel in die swf spieken ?
Offline Stijn - 29/08/2007 01:11
Avatar van Stijn PHP expert nee, weet wel dat er een swf decoder bestaat. maar ben nu te lam om te zoeken. (voor de sima rode loper pers: ik lig halfnaakt in bed )
Offline vinTage - 29/08/2007 01:15 (laatste wijziging 29/08/2007 01:18)
Avatar van vinTage Nieuw lid okay, ik zal je de rompslomp besparen, en je het belangrijkste as code gedeelte geven:
  1. ontvang = new LoadVars();
  2. zend = new LoadVars();
  3. zend.checker = checkOne;
  4. zend.sendAndLoad("ver_random.php",ontvang,"POST");
  5.  
  6.  
  7. ontvang.onLoad = function() {
  8. for (i=0; i<lengte; i++) {
  9. _root.attachMovie("letter", "beweegletter"+i, i, {_x:20+(i*30), _y:25})
  10. _root["beweegletter"+i]._visible = false;
  11. _root["beweegletter"+i].tekst.text = ontvang.input_var.charAt(0+i);
  12. imgArray.push("beweegletter"+i);
  13. }
  14. };


ps, voordat je nu roept dat je het weet, be absolutely sure dat de code die je ziet ook daadwerkelijk klopt.
mischien zit er wel een sessietje tussen.

offtopic, bij geshi kan je ook de tabindex zetten, een beetje kleiner zou een hoop scrollen besparen(niet zozeer in dees post, maar soms.... 
Offline Stijn - 29/08/2007 01:27
Avatar van Stijn PHP expert a ik wist niet meer dat je een php pagina kon inladen in AS (ben al een tijd uit flash).
Offline vinTage - 29/08/2007 01:35
Avatar van vinTage Nieuw lid okay, nu de doodsteek voor mij...of hopelijk toch niet, want ik heb toch geprobeerd dit te omzeilen, maar ik weet niet hoe ik dit moest testen:

de swf post die checkone naar ver_random.
op ver_random word gekeken of checkone (die ook in een sessie staat) wel dezelfde waarde heeft.
zoniet: echo gna gna

zoja: echo de string waar flash de captcha mee vult, maar tegelijkertijd zet ik dus ook een sessie met die "string".

Bij het daadwerkelijke posten is er iets wat dan eea checked, if not: fout,
if yes: post



Nu je dus DENKT dat je via een formpje en checkone die string kan oproepen, okay, je ZIET wel een string, maar is dat wel de juiste om mee te posten ? 

Als je dat weet, dan zou je dus via een extern form moeten kunnen posten (bot)...maar ik hoop dat dit dus goed opgelost is.
Offline ikki007 - 29/08/2007 07:30
Avatar van ikki007 Gouden medailleGouden medaille

PHP ver gevorderde
Waar is die md5 goed voor?
Het is niet de gecodeerde string van de letters.
Offline vinTage - 29/08/2007 17:25 (laatste wijziging 29/08/2007 17:26)
Avatar van vinTage Nieuw lid Die string is een sessie variable, zodra de swf die sessievar leest, plopt hij die naar ver_random, die op zijn beurt dan weer checked of dat nummer wel daadwerkelijk de sessie var is, zo ja: echo de captcha string, zo nee: echo gna gna.

Offline timmie_loots - 29/08/2007 18:29 (laatste wijziging 29/08/2007 18:47)
Avatar van timmie_loots PHP gevorderde Wat ik me afvraag is of Actionscript reeds voor het sturen van de response een code kan genereren. Als dit mogelijk is is het natuurlijk niets anders dan reguliere regex maar dan iets uitgebreider. Overigens is het heel gemakkelijk een bot een pagina te laten zien, iets aan te laten klikken (fixed coords) en vervolgens een screenshot te maken. Dit is dus in principe geen veiligere captcha.

Volgens mij is de aard van actionscript heel anders en moet de random code eerst opgehaald worden. Als ik de code zo even over kijk gebeurt dat met een POST request, als dat inderdaad de manier is van ophalen van de code dan is de code heel gemakkelijk te onderscheppen natuurlijk.

EDIT: En gotcha. Met een HTTP sniffer heel gemakkelijk de POST onderschept: "&input_var=wbklh7". Jammer maar helaas, try again ;)
Offline gothmog - 29/08/2007 18:42
Avatar van gothmog Lid Knap bedacht, ik begrijp niet dat ik dat nog nooit eerder heb gezien, veel moeilijker te kraken door bots!
Offline vinTage - 29/08/2007 18:44
Avatar van vinTage Nieuw lid Over het printscreen gedeelte: een printscreen is nutteloos, want met as zorg ik ervoor dat er ALTIJD één character uit de string ontbreekt in de swf, dus dat ding staat daar te knipperen en flitsen, en laat random telkens één letter verdwijnen.
Je kan dan hardop denken, dan neem ik een tweede of derde printscreen, MAAR, daar ontbreekt weer een ander character (of mss wel 2 keer dezelfde), en de rest van de letters is random geroteerd en heeft een andere kleur.


Over je response vraag, die vraag snap ik niet helemaal.
Wat er basicly gebeurd is volgende:
je komt op die pagina en er word een sessie gezet.
Die sessie plaats ik IN de swf (checkOne)
Flash post die string dan op zijn beurt weer naar ver_random.php
Op ver_random word gekeken of flash (of jijzelf) de juiste waarde stuurt en checked of dat dus wel klopt met die sessie.

Als dat wel klopt, dan echod ver random een string terug naar flash waarmee flash die captcha opbouwt.

Ik heb in mn testfase (is dit ook nog steeds wel) natuurlijk een var_dump gezet op de index, en daar stond altijd een "oude" session, maw, flash roept die var_random aan en kan dus ook daar een sessie starten (de 2e sessie)

Tijdens het posten vergelijk ik de 2 sessies...
Offline timmie_loots - 29/08/2007 18:49 (laatste wijziging 29/08/2007 18:54)
Avatar van timmie_loots PHP gevorderde Zie mijn edit ook, maar ik post het nog eens:

Ik heb met een HTTP sniffer de POST onderschept waarmee ik heel keurig "&input_var=wbklh7" in mijn sniffer te zien krijg. Ik weet niet of het onderdeel is van je test gebeuren, want dat volg ik niet helemaal, maar zorg dan even dat het zonder test is, maar hoe het er met uiteindelijk implementatie uitziet.

EDIT: Oh en btw, het was wel inderdaad de goede code, voor je daaraan twijfelt 

EDIT2: @hierboven: Over het printscreen gebeuren, dat is heel fijn voor je, maar zolang jij die rechtermuisklik optie hebt, is het TOTAAL geen punt om dat eventjes stil te zetten. Een aantal muiskliks simuleren is voor een bot écht geen probleem, en dan heb je alsnog stilstaande characters, en de gehele code. Dat die achtergrond vervolgens draait is geen probleem natuurlijk.
Offline vinTage - 29/08/2007 18:57 (laatste wijziging 29/08/2007 18:58)
Avatar van vinTage Nieuw lid Shit, die sniffer had ik niet aan gedacht (ben me wel bewust van die dingen) maar een https is net iets te duur voor dit projectje 

Okay, dan een bijkomende vraag, die bots, lijkt me sterk dat die sniffen toch?, meestal ontcijferen die capthas dmv OCR.

Zou ik (tot nu toe) safe zijn met deze poging, of is stelt het nu geen kloot meer voor ?

edit: dan haal ik die rechtermuis optie er gewoon uit 
Offline Rens - 29/08/2007 19:00
Avatar van Rens Gouden medaille

Crew algemeen
http://technolo...cents.html
Denk dat jouw manier dus ook zo nutteloos word...
Offline timmie_loots - 29/08/2007 19:01 (laatste wijziging 29/08/2007 19:03)
Avatar van timmie_loots PHP gevorderde Uiteindelijk is het voor ongerichte bots voorlopig inderdaad veilig. Die kijken waarschijnlijk naar de forms in een pagina en submitten daar troep naar toe.

Het wordt wel een probleem bij wat geavanceerdere bots, want dan is de kans inderdaad groot dat de code wordt onderschept. Op het moment kun je het gewoon gebruiken, lijkt me sterk dat je slachtoffer wordt van een gerichte aanval. Maar mocht dat wel het geval zijn, dan helpt een gewone captcha beter.

En over het weghalen van de rechtermuisoptie; dat is ook weer niet zo handig omdat het erg lastig is de code te volgen op die manier. Het is dan wellicht handig het geheel wat minder snel te laten knipperen, anders is de drempel te hoog. Dan is je CAPTCHA alsnog nutteloos, omdat het stelregel is dat hij niet te ingewikkeld moet zijn.

EDIT: @Rens: omgwtfbbq? lol 
Offline vinTage - 29/08/2007 19:07 (laatste wijziging 29/08/2007 19:28)
Avatar van vinTage Nieuw lid Jammer maar helaas dus  
Bedankt voor jullie inzet en tijd @timmy_loots speciaal.

Het design en looks en gedoe van de captcha was maar een ruwe schets van wat het moest worden, dus qua duidelijkheid etc was nog een todo dingetje.

Het was mn bedoeling om een allround safe captcha te maken, maar die sniffer toestanden had ik totaal over het hoofd gezien, projectje is nu dus bullshit voor me geworden.

edit: ik ga even overleg plegen met de gasten die ook min of meer open stonden voor dit projectje, en als het hun niks uitmaakt, dan post ik de code hier die ik gebruikte.

edit2:
Voor de mensen die dit dus toch evt willen gebruiken

index.php
  1. <?PHP
  2.  
  3. include("config.php");
  4.  
  5. $controleDing = (isset($_SESSION['randVar']) === false) ? md5(microtime()) : $_SESSION['randVar'] ;
  6. $_SESSION['randVar'] = $controleDing;
  7.  
  8. if($_SERVER['REQUEST_METHOD'] == "POST")
  9. {
  10. if($_POST['code'] == $_SESSION['getal'])
  11. {
  12. $bericht = mysql_real_escape_string(htmlentities($_POST['bericht']));
  13. if(empty($bericht))
  14. {
  15. $bericht = 'de captcha zei: '.mysql_real_escape_string(htmlentities($_SESSION['getal']));
  16. }
  17. mysql_query("INSERT INTO captcha (naam, bericht) VALUES ('".mysql_real_escape_string(htmlentities($_POST['naam']))."', '".$bericht."')") or die(mysql_error());
  18. echo 'data opgeslagen<br />';
  19. }
  20. else
  21. {
  22. echo 'Fout<br />';
  23. echo '<a href="javascript:history.back()>terug</a>';
  24. }
  25. }
  26. else
  27. {
  28. ?>
  29.  
  30. <form action="<?=$_SERVER['REQUEST_URI']?>" method="post">
  31. <p><strong>Optioneel</strong> tis toch maar testzooi</p>
  32. <p>naam<br />
  33. <input name="naam" type="text" />
  34. <br />
  35. <br />
  36. bericht<br />
  37. <textarea name="bericht" cols="39" rows="10"></textarea>
  38. </p>
  39. <hr />
  40. <br />
  41. <p><strong>Verplicht</strong><br />
  42. <span class="style2">Via rechtermuis op de swf kan je de swf laten stoppen met knipperen en alle letters zichtbaar maken, ik denk niet dat een bot dat zelf kan, maar als dat wel zou kunnen, dan sloop ik die functie er gewoon weer uit</span> </p>
  43. <div id="captcha" style="width:100%; height:50px;">Zonder javascript enabled kunt u niet posten (als het goed is)<br />Zet javascript dus aan.<br />Als javascript al aanstaat, maar u ziet nog deze message, download dan de <a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash">gratis flashplayer</a> </div>
  44. <script type='text/javascript'>
  45. var so = new SWFObject('captcha.swf?checkOne=<?=$_SESSION['randVar']?>', 'captcha', '200', '50', '8');
  46. so.addParam('allowScriptAccess', 'sameDomain');
  47. so.addParam('quality', 'high');
  48. so.addParam('scale', 'noscale');
  49. so.addParam('loop', 'false');
  50. so.write('captcha');
  51. </script>
  52. <br style="clear:both;"/>Neem bovenstaande code over <input name="code" type="text" />
  53. <input name="save" type="submit" value="save" />
  54. </form>
  55. <?php
  56. }
  57. ?>
  58. </body>
  59. </html>



ver_random.php
  1.  
  2. function randstr($length,$hash = "abcdefghijklmnopqrstuvwxyz0123456789") {
  3. $strlength = strlen($hash);
  4. $string = "";
  5. for($i = 0; $i < $length; $i++)
  6. {
  7. $random = rand(0,$strlength) - 1;
  8. $string .= substr($hash,$random,1);
  9. }
  10. return $string;
  11. }
  12.  
  13. if($_SERVER['REQUEST_METHOD'] == "POST" && $_POST['checker'] == $_SESSION['randVar'] )
  14. {
  15. $deCaptcha = randstr(6);
  16. $_SESSION['getal'] = $deCaptcha;
  17. echo "&input_var=".$deCaptcha;
  18. }
  19. else
  20. {
  21. echo 'gna gna';
  22. }
  23. ?>

De flash code vind je elders in dit topic (het grafische gedeelte van die swf mag je zelf uitpluizen 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.225s