示例#1
0
文件: index.php 项目: haypo/conf
function telecharge($fichier)
{
    // Interdit des exploits trop vilains
    $allow = array('INTO', 'LOAD_FILE', 'OUTFILE');
    if (!crackme_check_sql($fichier, $allow)) {
        crackme_error('<p>Nom de fichier incorrect : «&nbsp;<em>' . $str . '</em>&nbsp;».');
        return;
    }
    // Vérifie les LOAD_FILE
    if (!crackme_check_loadfile($fichier)) {
        return;
    }
    // Vérifie les OUTFILE
    if (preg_match_all('/OUTFILE +([^ ]+)/i', $fichier, $match)) {
        foreach ($match[1] as $string) {
            $str = mysql2str($string);
            if (!$str) {
                crackme_error("<p>Chaîne non reconnue : «&nbsp;{$string}&nbsp;».");
                return;
            }
            if (strpos($str, '/') === false || !crackme_file_allowed($str)) {
                crackme_error("<p>Pas le droit d'écrire dans le fichier «&nbsp;{$str}&nbsp;». Utilisez le répertoire couran(" . realpath('.') . ") ...");
                return;
            }
        }
    }
    // Lit le compteur
    crackme_init_sql();
    $compteur = crackme_sql_query("SELECT compteur FROM crackme4 WHERE fichier='{$fichier}';");
    if (!$compteur) {
        crackme_error("<p>Erreur du compteur ...</p>");
        return;
    }
    // Interdit les fichiers autres que truc.txt
    if (!ereg("^[a-zA-Z0-9]+\\.txt\$", $fichier)) {
        crackme_error("<p>Seul les fichiers textes (.txt) du répertoire courant sont autorisés.</p>");
        return;
    }
    // Mise à jour du compteur
    if (mysql_num_rows($compteur) == 1) {
        crackme_sql_query("UPDATE crackme4 SET compteur=compteur+1 WHERE fichier='{$fichier}';");
    } else {
        crackme_sql_query("INSERT INTO crackme4 (fichier, compteur) VALUES('" . mysql_real_escape_string($fichier) . "',1);");
    }
    // Lit la taille du fichier
    $size = filesize($fichier);
    if ($size === false || $size == 0) {
        crackme_error("<p>Impossible de lire la taille du fichier \"<em>{$fichier}</em>\", ou alors il est vide.</p>");
        return;
    }
    header("Content-Type: application/octet-stream");
    header("Content-Length: " . $size);
    header("Content-Disposition: attachment; filename=\"" . basename($fichier) . "\";");
    readfile($fichier);
    die;
}
示例#2
0
文件: index.php 项目: haypo/conf
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>');
    }
}
示例#3
0
文件: index.php 项目: haypo/conf
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>';
    }
}
示例#4
0
文件: index.php 项目: haypo/conf
function affiche_article($id)
{
    if (!crackme_check_sql($id)) {
        crackme_error('<p>Hum, je n\'ai pas réussi à valider tes entrées ... (engueule Victor)</p>');
        return -1;
    }
    $sql = 'SELECT titre, texte FROM ' . $GLOBALS['table'] . ' WHERE id=' . $id . ' AND secret=0';
    $r = crackme_sql_query($sql);
    if (!$r) {
        return false;
    }
    if (mysql_num_rows($r) == 0) {
        return 0;
    }
    $row = mysql_fetch_array($r);
    if ($row === false) {
        return 0;
    }
    $titre = utf8_encode($row[0]);
    $texte = utf8_encode($row[1]);
    echo '<h2>' . $titre . '</h2>';
    echo '<div class="article">' . $texte . '</div>' . "\n";
    return 1;
}