function main() { $id = crackme_html_request('id'); if ($id != '') { if (affiche_article($id) == 0) { crackme_error("<p>Article inexistant (ou secret !).</p>"); } echo '<p><a href="' . $GLOBALS['page'] . '">Retour à la liste des articles</a></p>'; } else { liste_articles(); } }
<?php error_reporting(E_ALL); $rootpath = '../'; $url_root = '../'; require_once $rootpath . 'include/crackme_func.php'; // Le secret est juste quelques lignes en dessous ... $motpasse = crackme_html_request('motpasse'); if ($motpasse) { if ($motpasse == 'yougotit') { echo '<div class="article"><p>Mot de passe valide !</p></div>'; // ... (normalement on fait plein de truc ici) } else { crackme_error('<p>Mot de passe incorrect.</p>'); } } $article = crackme_html_request('article'); if ($article) { // Test pour rendre l'exercice plus complique if (strstr($article, "../") !== false) { crackme_error("<p>Tututu, pas de \"../\" dans un nom d'article ! (pas folle l'abeille)</p>"); $article = false; // Test pour eviter qu'on sorte du "cadre de l'exercice" ... } else { if (file_exists($article)) { if (!crackme_file_allowed($article)) { crackme_error("<p>Tututu, pas le droit au repertoire \"" . dirname($article) . "\" !</p>"); $article = false; } } } }
if (!$r || !($row = @mysql_fetch_row($r))) { crackme_error('<p>Erreur SQL !?</p>'); return; } if ($row[0] == '913850b6724b8461bdf6ba268294a605') { echo '<div class="article"><p>Mot de passe valide !</p></div>'; // ... (normalement on fait plein de truc ici) } else { crackme_error('<p>Mot de passe incorrect.</p>'); } } $motpasse = crackme_html_request('motpasse'); if ($motpasse) { login($motpasse); } $source = crackme_html_request('source'); if ($source) { echo '<div class="article"><pre>'; highlight_file("index.php"); echo "</pre></div>\n"; } ?> <h2>S'authentifier :</h2> <form action="index.php" method="post"> <p>Mot de passe : <textarea name="motpasse" rows="2" cols="60"><?php echo htmlspecialchars($motpasse); ?> </textarea></p>
telecharge($fichier); } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Language" content="fr" /> <link rel="stylesheet" type="text/css" media="screen" href="../style.css" /> <title>Crackme #4</title> </head> <body> <h1>Crackme #4</h1> <?php $motpasse = crackme_html_request('motpasse'); if ($motpasse) { if ($motpasse == 'cetaitplusdurhein') { echo '<div class="article"><p>Mot de passe valide !</p></div>'; // ... (normalement on fait plein de truc ici) } else { crackme_error('<p>Mot de passe incorrect.</p>'); } } ?> <h2>Fichiers à télécharger :</h2> <ul> <?php function lit_repertoire_mysql()
} if (!crackme_check_loadfile($note)) { return; } $sql = "INSERT INTO crackme6 (id, note, texte) "; $sql .= "SELECT MAX(id)+1, {$note}, "; $sql .= "'" . mysql_real_escape_string($texte) . "' FROM crackme6"; $r = crackme_sql_query($sql); if (!$r) { crackme_error("<p>Erreur à l'ajout du commentaire :-(</p>"); } else { echo '<div class="article"><p>Commentaire ajouté.</p></div>'; } } $note = crackme_html_request('note'); $texte = trim(crackme_html_request('texte')); if ($note !== false && $texte) { if (crackme_get_magic_quotes()) { $texte = stripslashes($texte); } ajout($note, $texte); } ?> <h2>Débat :</h2> <p>Linux c'est de la merde</p> <h2>Commentaires :</h2> <?php
} else { $url = $GLOBALS['repertoire']; if ($url[strlen($url) - 1] != '/') { $url .= '/'; } $url .= rawurlencode($file); } return $prefix . '<a href="' . $url . '">' . $file . '</a>'; } // Configure l'exercice error_reporting(E_ALL); $rootpath = '../'; $url_root = '../'; require_once $rootpath . 'include/crackme_func.php'; // Lit le répertoire demandé, puis le vérifie $repertoire = crackme_html_request('r'); if ($repertoire) { // Interdit les repertoires parents if (!crackme_file_allowed($repertoire)) { crackme_error("<p>Pas le droit au répertoire <em>{$repertoire}</em> (ou répertoire inexistant) !</p>"); $repertoire = "./"; } // Vérifie l'exploit :-) if (ereg("^([a-zA-Z0-9._/]+)( *(;+|&&|\\|\\|) *(.*))?\$", $repertoire, $regs)) { $exploit = $regs[4]; $commande = $regs[4]; if ($exploit != '') { if (!eregi("^uname( --?[a-z-]+)?\$", $commande)) { $msg = "<p>Désolé, seule la commande <em>uname</em> est autorisée.</p>"; $msg .= "<p>(commande détectée : « <em>{$commande}</em> »)</p>"; crackme_error($msg);