login  Naam:   Wachtwoord: 
Registreer je!
 Forum

PHP Code uitvoeren (Opgelost)

Offline tomie94 - 02/03/2008 12:26 (laatste wijziging 02/03/2008 12:27)
Avatar van tomie94PHP interesse Hallo,

Ik ben bezig met een irc bot en daarmee wil ik een php functie maken, daarmee kun je als je !php php-code tikt zien wat je terug krijgt. Na een tijdje zoeken kwam ik op de functie PHP.net: eval nu probeer ik het zo uit:
  1. <?php
  2. if(isset($eData[3]) && $eData[3] == ':!php' && isset($eData[4])) {
  3. $code = trim(array_pop(explode('!php',$data)));
  4. schrijf('PRIVMSG '.$eData[2].' : '.eval($code));
  5. }
  6. ?>


opzich werkt dit want als ik !php exit(); tik stopt de bot. maar als ik bijv. !php echo 'test'; tik krijg ik niks terug.... iemand een idee wat het probleem is?

2 antwoorden

Gesponsorde links
Offline Rik - 02/03/2008 12:35
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
De output van eval wordt niet als string gereturned maar in het script geoutput. (In de shell dus als je hem zo start, of je ziet helemaal niets als je hem via een cron start) Je zal dan PHP.net: ob_start en PHP.net: ob_get_clean moeten gebruiken.

Ik zou wel zorgen dat niet iedereen hier bij kan want zo kan een hacker je systeem makkelijk kraken. 
Offline tomie94 - 02/03/2008 12:38 (laatste wijziging 02/03/2008 12:51)
Avatar van tomie94 PHP interesse het systeem is ook alleen bruikbaar door mij. anders kun je zo de hele database leeghalen

ik zal eens kijken naar obstart. maar ik weet niet hoe het werkt

Edit

ik heb nu dit:
  1. if(isset($eData[3]) && $eData[3] == ':!php' && isset($eData[4])) {
  2. $code = trim(array_pop(explode('!php',$data)));
  3. eval($code);
  4. $out = ob_get_clean();
  5.  
  6. schrijf('PRIVMSG '.$eData[2].' : '.$code);
  7. }


nu werkt !php exit(); maar als ik !php echo 'test'; doe krijg ik gewoon echo 'test'; terug inplaats van test

Edit2

ik zie hierboven een fout in, $code moet $out zijn. zal zo zegen of het verschild

Edit3

het werkt nu maar, ik heb een probleem. ik draai deze bot in cmd en als ik dus bijv. !php echo file_get_contents("BESTAND"); doe krijg ik niks in me irc client maar in cmd staar dan Uknown Command.

de code is nu:
  1. if(isset($eData[3]) && $eData[3] == ':!php' && isset($eData[4])) {
  2. $code = trim(array_pop(explode('!php',$data)));
  3. eval($code);
  4. $out = ob_get_clean();
  5.  
  6. schrijf('PRIVMSG '.$eData[2].' : '.$out.'');
  7. }
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.244s