OVH Cloud OVH Cloud

SQL Injection Wargame

11 réponses
Avatar
Nicob
Hello !

Pour ceux qui maitrisent le SQL Injection, ou qui veulent juste
se perfectionner :

http://www.hackingzone.org/sql/

Franchement bien fait, et amusant !


Nicob
PS : Pour le niveau 4, j'ai l'impression d'avoir fait le bourrin.
Peut-être qu'il serait bien de comparer les méthodes utilisées (en privé
pour ne pas casser le fun des autres)

10 réponses

1 2
Avatar
djehuti
salut
"Nicob" a écrit dans le message news:

Hello !

Pour ceux qui maitrisent le SQL Injection, ou qui veulent juste
se perfectionner :

http://www.hackingzone.org/sql/

Franchement bien fait, et amusant !


ah ouais... tu trouves ? :-(

j'ai réussi à passer le niveau 1 (en force, puisque les requêtes sensées
fonctionner... ça marche pô)

alors c'est quoi ?... y a un truc ?... faut autre chose qu'un simple
navigateur ?

à moins que tu ais prévu un petit tuto en français... tu as quelques
(bonnes) lectures à conseiller ?

je ne dors plus, mOA, avec ces c.........

@tchao

Avatar
Nicob
On Thu, 27 Nov 2003 16:17:46 +0000, djehuti wrote:

j'ai réussi à passer le niveau 1 (en force, puisque les requêtes
sensées fonctionner... ça marche pô)


Chez moi, le niveau 1 marche sans faire le bourrin.

alors c'est quoi ?... y a un truc ?... faut autre chose qu'un simple
navigateur ?


J'ai pu aller jusqu'au niveau 4 avec un simple navigateur (Opera).

Par contre, pour le 4, j'ai scripté mes requêtes car je ne voyais qu'une
solution légèrement bourrine (il y avait aussi moyen par dichotomie,
mais bon ...)

à moins que tu ais prévu un petit tuto en français... tu as quelques
(bonnes) lectures à conseiller ?


La doc de MySQL :)

Sérieusement, le site n'est clair du tout sur le fait que pour le niveau
2, il faut utiliser le script vulnérable du niveau 1 pour extraire les
infos de la BD, puis les coller dans le formulaire du niveau 2.

Hint : le numéro de version de MySQL est important !

je ne dors plus, mOA, avec ces c.........


Quand j'ai eu l'URL, j'ai voulu finir le concours avant de me coucher.
Et ben du coup, je me suis couché tard ... très tard :(


Nicob

Avatar
Matthieu
djehuti wrote:
j'ai réussi à passer le niveau 1 (en force, puisque les requêtes sensées
fonctionner... ça marche pô)
pourtant la premiere requete est loin d'etre compliquée; dans toutes les

lectures que j'ai pu voir sur le sql inject, ils mentionnent ce genre de
techniques...

alors c'est quoi ?... y a un truc ?... faut autre chose qu'un simple
navigateur ?

à moins que tu ais prévu un petit tuto en français... tu as quelques
(bonnes) lectures à conseiller ?

je ne dors plus, mOA, avec ces c.........
moi non plus, l'enoncé de la question 2 est mal posé apparemment ... :)



@tchao



--
-----------------------------------------------
Matthieu

pour une reponse par email, enlevez le .invalid
for an email answer, please remove the .invalid
-----------------------------------------------

Avatar
Matthieu
Nicob wrote:
On Thu, 27 Nov 2003 16:17:46 +0000, djehuti wrote:
Sérieusement, le site n'est clair du tout sur le fait que pour le niveau
2, il faut utiliser le script vulnérable du niveau 1 pour extraire les
infos de la BD, puis les coller dans le formulaire du niveau 2.


ils mentionnent sur le forum qu'il y a moyen de se passer des username
et password en forcant l'initialisation d'une variable qui marque le login.
j'ai voulu le faire en brute, avec
<?php
set_time_limit(0);
$url = 'http://www.hackingzone.org/sql/level2/';
$content_ini = file_get_contents($url);

$varname =
array('auth','login','authenticated','log','connected','check','checked','pass','authentify');
$val = array('yes','no','true','false','0','1','on','off');
foreach($varname as $i => $v){
foreach($val as $j => $k){
$urlmod = $url.'?'.$v.'='.$k;
$content_mod = file_get_contents($urlmod);
if ($content_ini != $content_mod) echo "[$urlmod] => pass<BR>rn";
else echo "[$urlmod] => fail<BR>rn";
}
}
?>
mais cela ne donne rien :(

--
-----------------------------------------------
Matthieu

pour une reponse par email, enlevez le .invalid
for an email answer, please remove the .invalid

Avatar
djehuti
salut
"Nicob" a écrit dans le message news:


Chez moi, le niveau 1 marche sans faire le bourrin.


ouais... finalement, ça marche

(bonnes) lectures à conseiller ?


La doc de MySQL :)


c'est bien ce que je craignais ;-(

Sérieusement, le site n'est clair du tout sur le fait que pour le
niveau 2, il faut utiliser le script vulnérable du niveau 1 pour
extraire les infos de la BD, puis les coller dans le formulaire du
niveau 2.


c'est clair... que c'est pas clair

Hint : le numéro de version de MySQL est important !


mouais, j'ai cru comprendre que c'était une sorte de soupe à l'union

Quand j'ai eu l'URL, j'ai voulu finir le concours avant de me coucher.
Et ben du coup, je me suis couché tard ... très tard :(


ok, donc c'est pas demain la veille que je saurai comment sécuriser un site

j'sais pô si j'dois te remercier pour tout ça !!! :-)

@tchao


Avatar
Nicob
On Fri, 28 Nov 2003 08:47:37 +0000, Matthieu wrote:

ils mentionnent sur le forum qu'il y a moyen de se passer des username et
password en forcant l'initialisation d'une variable qui marque le login.


Quel forum ?


Nicob

Avatar
T0t0
"djehuti" wrote in message
news:3fc6a9c0$0$2362$
Chez moi, le niveau 1 marche sans faire le bourrin.
ouais... finalement, ça marche



La seule chose que je peux reprocher est de ne pas recevoir de
message d'erreur de la part du serveur. Ce qui fait que je ne sais pas
comment ma requête est interprêté par le serveur ni comment orienter
ma recherche.
D'ailleurs, j'ai trouvé la bonne syntaxe, mais je ne sais pas si
d'autres solutions sont possibles...

La doc de MySQL :)
c'est bien ce que je craignais ;-(



Une recherche sur "sql injection" sur google fait très bien l'affaire
aussi (le doc de spi labs est bien)

Sérieusement, le site n'est clair du tout sur le fait que pour le
niveau 2, il faut utiliser le script vulnérable du niveau 1 pour
extraire les infos de la BD, puis les coller dans le formulaire du
niveau 2.
c'est clair... que c'est pas clair



Pourtant, dans la description du level, il est clairement dit que
la nouvelle table est contenue dans la même base. C'est quand même
un bon indicateur.

Hint : le numéro de version de MySQL est important !
mouais, j'ai cru comprendre que c'était une sorte de soupe à l'union



Ouaip, en allant sur le site de mysql, on voit dans les nouveautes de
la version 4.x l'utilisation de union :-)

Quand j'ai eu l'URL, j'ai voulu finir le concours avant de me coucher.
Et ben du coup, je me suis couché tard ... très tard :(
ok, donc c'est pas demain la veille que je saurai comment sécuriser un site



La sécurisation des caractères passés en paramètres dans l'URL est
déjà un bon début à mon avis.

j'sais pô si j'dois te remercier pour tout ça !!! :-)


Sisi, c'est un vrai régal !



--
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG


Avatar
Nicob
On Fri, 28 Nov 2003 10:56:15 +0000, T0t0 wrote:

D'ailleurs, j'ai trouvé la bonne syntaxe, mais je ne sais pas si d'autres
solutions sont possibles...


C'est pour cette raison que je vais faire un p'tit doc sur le concours,
avec ma façon de faire. Chacun pourra apporter sa pierre à l'édifice,
afin d'avoir au bout du compte les façons les plus élégantes pour chaque
niveau.

La sécurisation des caractères passés en paramètres dans l'URL est
déjà un bon début à mon avis.


Tu ne diras plus ça après le niveau 4, où il faut tout faire sans quotes
ni guillemets :)


Nicob

Avatar
patpro
In article <3fc69730$0$9311$,
Matthieu wrote:


ils mentionnent sur le forum qu'il y a moyen de se passer des username
et password en forcant l'initialisation d'une variable qui marque le login.
j'ai voulu le faire en brute, avec
<?php
set_time_limit(0);
$url = 'http://www.hackingzone.org/sql/level2/';
$content_ini = file_get_contents($url);

$varname =
array('auth','login','authenticated','log','connected','check','checked','pass
','authentify');
$val = array('yes','no','true','false','0','1','on','off');
foreach($varname as $i => $v){
foreach($val as $j => $k){
$urlmod = $url.'?'.$v.'='.$k;
$content_mod = file_get_contents($urlmod);
if ($content_ini != $content_mod) echo "[$urlmod] => pass<BR>rn";
else echo "[$urlmod] => fail<BR>rn";
}
}
?>
mais cela ne donne rien :(



ca marche ton script la ? parce qu'il me semble qu'il faut etre logué
pour accéder aux URL du jeu, donc il faudrait que ton script php se
logue, rammenne l'éventuel cookie, etc.
Enfin j'ai pas regardé de pret, je suis tjrs bloqué au niveau 0 8)))
Les injection sql c'est vraiment pas mon fort...

patpro

--
je cherche un poste d'admin UNIX/Mac
http://patpro.net/cv.php

Avatar
Matthieu
Nicob wrote:
On Fri, 28 Nov 2003 08:47:37 +0000, Matthieu wrote:


ils mentionnent sur le forum qu'il y a moyen de se passer des username et
password en forcant l'initialisation d'une variable qui marque le login.



Quel forum ?


Nicob
bonjour


http://www.hackingzone.org/forum/

la piste est evoquée pour la verification login / password
le principe est le suivant:

if ($login == "hello") $auth = 1;
if ($auth==1) {
// traitement de l'authentification

}

vu qu'apparemment le register global est a on, j'ai essayé aussi cette
piste :)

--
-----------------------------------------------
Matthieu

pour une reponse par email, enlevez le .invalid
for an email answer, please remove the .invalid
-----------------------------------------------


1 2