Exemple #1
0
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();
    }
}
Exemple #2
0
function login($pass)
{
    if (!crackme_check_sql($pass)) {
        return;
    }
    $r = crackme_sql_query("SELECT MD5('{$pass}')");
    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>');
    }
}
Exemple #3
0
function ajout($note, $texte)
{
    if (!crackme_check_sql($note, array('LOAD_FILE'))) {
        return;
    }
    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>';
    }
}
Exemple #4
0
        // ... (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;
            }
        }
    }
}
// S'il y a une erreur, utilise l'article par defaut
if (!$article) {
    $article = 'index.txt';
}
// Affiche le contenu de l'article
$texte = file($article);
echo join("\n", $texte);
?>

<h2>Aide :</h2>
Exemple #5
0
function liste_txt()
{
    $dir = opendir('./');
    if (!$dir) {
        crackme_error("<p>Impossible d'ouvrir le répertoire courant !?</p>");
        return;
    }
    while (($file = readdir($dir)) !== false) {
        if (eregi("^[a-zA-Z0-9]+\\.txt\$", $file)) {
            echo '<li><a href="index.php?f=' . $file;
            echo '">' . $file . '</a></li>' . "\n";
        }
    }
    closedir($dir);
}
Exemple #6
0
function crackme_init_sql()
{
    $root = realpath('../');
    if (ereg("^/var/www", $root)) {
        $file = '/var/www/crackme_mysql.inc';
    } else {
        //$file = '/home/haypocal/include/crackme_mysql.inc';
        $file = '/home/www-data2/apache2/htdocs/crackme_mysql.php';
    }
    if (!file_exists($file)) {
        crackme_error("<p>Impossible de trouver le fichier de configuration SQL (<em>{$file}</em>) !</p>");
        return false;
    }
    include $file;
    return true;
}
Exemple #7
0
    }
    // 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 : «&nbsp;<em>{$commande}</em>&nbsp;»)</p>";
                crackme_error($msg);
                $repertoire = './';
            }
        }
    } else {
        $msg = "<p>Désolé mais le répertoire «&nbsp;<em>{$repertoire}</em>&nbsp;» ne semble pas valide.</p>";
        crackme_error($msg);
        $repertoire = './';
    }
} else {
    $repertoire = './';
}
// Lit le contenu d'un repertoire
ob_start();
passthru("ls -lha 2>&1 {$repertoire}");
$ls = ob_get_contents();
ob_end_clean();
//---- Traite le résultat de ls ------
// Supprime "total ..."
$ls = explode("\n", $ls);
$out = "";
foreach ($ls as $ligne) {