Goeiemiddag!
Ik wou vandaag maar eens wat doen aan mijn php kennis, en heb wat dingen gedaan met de functie eval(). Als ik echter probeer een soort van shell te maken, werkt het niet: ik krijg verschillende foutmeldingen. Ik heb geprobeerd de code (die wordt verstuurd via een formulier) te filteren van bijvoorbeeld openingstags, en ik heb het laten echo'en in een buffer (wordt dus opgevangen in een buffer). Ik heb nog steeds last van foutmeldingen:
Bij het invoeren van:
Met de volgende php code:
En ja, ik weet dat eval() zeer gevaarlijk is, vooral op deze manier. Het is alleen puur voor educatieve doeleinden
Ik wou vandaag maar eens wat doen aan mijn php kennis, en heb wat dingen gedaan met de functie eval(). Als ik echter probeer een soort van shell te maken, werkt het niet: ik krijg verschillende foutmeldingen. Ik heb geprobeerd de code (die wordt verstuurd via een formulier) te filteren van bijvoorbeeld openingstags, en ik heb het laten echo'en in een buffer (wordt dus opgevangen in een buffer). Ik heb nog steeds last van foutmeldingen:
Code:
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /Volumes/Apache/phpcs.php(49) : eval()'d code on line 1
Warning: Unexpected character in input: ''' (ASCII=39) state=1 in /Volumes/Apache/phpcs.php(49) : eval()'d code on line 1
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /Volumes/Apache/phpcs.php(49) : eval()'d code on line 1
Bij het invoeren van:
Code:
echo 'hello world!';
Met de volgende php code:
PHP:
<?php
// Turn on error reporting
ini_set('display_errors', 1);
error_reporting(E_ALL);
// Check if something is posted
if($_SERVER['REQUEST_METHOD'] == 'POST' || isset($_POST['submit'])) {
// Check if code is posted
if(isset($_POST['code'])) {
// Filter code
$code = $_POST['code'];
$code = str_replace('<'.'?'.'php', '', $code);
$code = str_replace('<'.'?', '', $code);
$code = str_replace('?'.'>', '', $code);
$code = stripslashes($code);
// Catch code when displayed
ob_start();
echo $code;
$code = ob_get_contents();
ob_end_clean();
// DANGEROUS FUNCTION: eval()
// Execute posted code
eval($_POST['code']);
} else {
echo 'No code posted!';
}
} else {
echo '<form method="POST" action="">'.PHP_EOL.
'<textarea name="code" style="width: 100%; height: 90%;">Post some code :-)</textarea><br />'.PHP_EOL.
'<input type="submit" name="submit" value="Execute" />'.PHP_EOL.
'</form>';
}
?>
En ja, ik weet dat eval() zeer gevaarlijk is, vooral op deze manier. Het is alleen puur voor educatieve doeleinden
