ΕΛ/ΛΑΚ | creativecommons.gr | mycontent.ellak.gr |
freedom

Νέα από το πλανήτη…planet.ellak.gr: SQL Injection – Εισαγωγή για αρχάριους!

Τα άρθρα που διαβάζετε, βρίσκονται αποθηκευμένα σε βάσεις δεδομένων και σας εμφανίζονται αφού κάνετε κλικ σε έναν σύνδεσμο που βρήκατε στο internet. Αυτό το απλό «κλικ» στην πραγματικότητα ζητάει τα δεδομένα να προβληθούν στην οθόνη της συσκευής σας. Για να επιτευχθεί όμως αυτό, σε κλάσματα δευτερολέπτου εκτελούνται ερωτήματα στην βάση δεδομένων του ιστότοπου που επισκεφτήκατε.

Το δικό σας ερώτημα στον ιστότοπο ήταν καλόβουλο… ενώ κάποιου άλλου είναι κακόβουλο; Πως μπορεί να γίνει αυτό;

Ας αρχίσουμε λοιπόν!

Τι είναι μια βάση δεδομένων (Database);

Τι είναι λοιπόν μια βάση δεδομένων; Με απλά λόγια, οι βάσεις δεδομένων είναι μια δομή πινάκων, όπου κάθε πίνακας περιέχει ένα σύνολο γραμμών που ορίζουν τα δεδομένα και τις στήλες που περιέχουν τα δεδομένα.

Ας δούμε ένα παράδειγμα.

Αυτός ο πίνακας μας, που ονομάζεται «UserData». Περιέχει 3 σειρές δεδομένων. Αρχικά το «ID», το δεύτερο είναι το «Username» και το τρίτο είναι το «Password». Με αυτόν τον τρόπο έχουμε αποθηκευμένα ορισμένα δεδομένα για τους χρήστες μας.

Κάθε στήλη εδώ περιέχει μια δέσμη δεδομένων ειδικά για μια τιμή (Σε αυτή την περίπτωση, ένας χρήστης.)

Για παράδειγμα, η πρώτη στήλη σε αυτόν τον πίνακα περιέχει δεδομένα που ανήκουν στον χρήστη «CyberMask», το δεύτερο στο χρήστη «unicorn» κ.ο.κ.
Έτσι, αν ήθελα να μάθω τον συνθηματικό πρόσβασης του CyberMask, έψαχνα τον «συνθηματικό» γραμμής που αντιστοιχεί στη στήλη όπου ο χρήστης είναι «CyberMask».

Επομένως, είναι μια βάση δεδομένων για αντιστοίχηση ονομάτων με συνθηματικά αλλά τι σχέση έχει η SQL με αυτό;

Τι είναι η SQL και πώς λειτουργεί;

Η SQL είναι τα αρχηκά της γλώσσας Structered-Query-Language1 και θα ακούσετε να την προφέρουν ως es-q-el ενώ άλλοι sequel. Είναι μια γλώσσα που χρησιμοποιείται συνήθως για τη διαχείριση βάσεων δεδομένων.

Ας πούμε ότι έχω ένα εκατομμύριο χρήστες στη βάση δεδομένων μου και ήθελα να βρω το αναγνωριστικό ενός συγκεκριμένου χρήστη, τώρα η αναζήτηση με το χέρι θα ήταν παράλογη. Έτσι δεν είναι;

Με την χρήση της SQL, μπορώ να πω στην βάση δεδομένων να επιλέξει το αναγνωριστικό του CyberMask και να το εκτυπώσει στο αποτέλεσμα.

Περιγραφή της SQL και της σύνταξης της

Ας πάρουμε ένα απόσπασμα κώδικα ως παράδειγμα:

1
SELECT ID FROM UserData WHERE Username='CyberMask';

Αυτό ονομάζεται ερώτημα (Query). Τα ερωτήματα είναι απλά κομμάτια κώδικα που τρέχετε.

Διαφέρουν από άλλες γλώσσες, όπου κάθε ερώτημα εκτελείται ξεχωριστά και ανεξάρτητα, ως οδηγίες που δίνονται στη βάση δεδομένων μέσω του μηχανισμού της βάσης δεδομένων.

Τι ακριβώς είπαμε στην βάση δεδομένων μας:

  • SELECT λέει στη βάση δεδομένων να επιλέξει μία ή περισσότερες τιμές.
  • ID είναι η τιμή SELECT που πρόκειται να επιλέξετε .
  • FROM δηλώνει στη βάση δεδομένων ποιο πίνακα πρέπει να χρησιμοποιήσει, στην περίπτωση αυτή είναι τα UserData .
  • WHERE εδώ είναι μια προϋπόθεση, απλά βάλτε, λέει στη βάση δεδομένων να επιλέξει μόνο ID όπου ID where.
  • certainValue θέλουμε τον κωδικό πρόσβασης από τη στήλη όπου η γραμμή ονόματος χρήστη έχει την τιμή CyberMask.

Τώρα λοιπόν που καλύψαμε μια βασική χρήση της SQL για να ανακτήσουμε δεδομένα, ας πάμε πιο κάτω και να εξηγήσουμε πώς την χρησιμοποιούν οι ιστοσελίδες!

Ενσωμάτωση της SQL σε άλλες γλώσσες προγραμματισμού

Αφού είδαμε πώς να αντλήσουμε δεδομένα από τη βάση δεδομένων πώς αυτό σχετίζεται με τους ιστότοπους και άλλες οντότητες του κυβερνοχώρου;

Η απάντηση είναι απλή, η SQL μπορεί να ενσωματωθεί σε άλλες γλώσσες όπως PHP και C#

Ας πάρουμε παράδειγμα, την PHP (η PHP είναι μια γλώσσα προγραμματισμού για εφαρμογές ιστού).

1
$r2 = $mysqli->query("SELECT ID FROM `UserData` WHERE ID='CyberMask');

Αν δείτε η σύνταξη είναι παρόμοια.

Είναι πολύ απλό το πώς ενσωματώνεται η SQL σε άλλες γλώσσες, καθώς για το μεγαλύτερο τμήμα η σύνταξη του Query (ερώτημα) είναι σχεδόν πάντα η ίδια!

Τι σημαίνει αυτό ακριβώς; Σημαίνει ότι οποιοσδήποτε ιστότοπος που χρησιμοποιεί μια βάση δεδομένων πιθανότατα χρησιμοποιεί SQL, καθώς είναι ένα βασικό κομμάτι για την διαχείριση της βάσεων δεδομένων.

Η SQL είναι μια ισχυρή γλώσσα με τους δικούς της μοναδικούς τρόπους. Παρά την απλότητα, χρησιμοποιείται σε πολύ μεγάλη κλίμακα. Μπορεί να χρησιμοποιηθεί από μόνη της, καθώς και να ενσωματωθεί σε άλλες γλώσσες προγραμματισμού. Συμπεριφέρεται με διαφορετικό τρόπο σε σύγκριση με τις περισσότερες γλώσσες προγραμματισμού, καθώς εκτελείται ξεχωριστά ως σύνολο στη βάση δεδομένων.

Τώρα, ξέρουμε τι είναι το SQL. Πώς αυτό σχετίζεται με το κακόβουλο hacking; Λοιπόν, ας το μάθουμε!

Τι είναι ένα SQL injection;

Το SQL Injection είναι ακριβώς αυτό που λέει και το όνομά του, μια ένεση SQL. Φυσικά όσο απλό και αν ακούγεται στην πραγματικότητα δεν είναι κάτι τόσο απλό.

Αυτό που κάνετε είναι να εισάγετε κακόβουλο κώδικα σε ένα ήδη υπάρχον «ερώτημα» με απώτερο στόχο να μπορείτε να χειριστείτε το σύνολο των οδηγιών πριν εκτελεστεί μέσω της βάσης δεδομένων.

Το SQL Injection σε αυτό είναι η καλύτερη τεχνική που μπορεί να σας δώσει τον πλήρη έλεγχο του λειτουργικού συστήματος που τρέχει τη βάση δεδομένων

Πώς λειτουργεί ένα SQL injection;

Ας πάρουμε αυτή τη μορφή φόρμας ως παράδειγμα:

Η φόρμα εκτελεί το παρακάτω ερώτημα:

1
SELECT Password FROM `UserData`​ WHERE UserName='CyberMask';

Στον κώδικα php του textbox (στην παραπάνω εικόνα) έδωσα μια μεταβλητή που ονομάζεται $username, οπότε οτιδήποτε πληκτρολογώ στο textbox θα τεθεί στη θέση $username μέσα στο ερώτημα.

Κατά κανόνα, ισχύει η συνθήκη $username = ό, τι πληκτρολογώ σε αυτό το πλαίσιο κειμένου.

Έτσι, θεωρητικά, εάν πληκτρολογήσω ένα ερώτημα σε αυτό το πλαίσιο κειμένου, θα πρέπει να τρέξει. Επομένως, εξού και η έννοια «ένεση».

Φυσικά, θα ήθελα να πληκτρολογήσω κάτι περισσότερο από ένα ερώτημα SELECT, αλλά αυτό θα το δούμε στο μέλλον!

Επίλογος

Η SQL είναι η πιο διαδεδομένη γλώσσα διαχείρισης βάσεων δεδομένων.Είναι μια απλή γλώσσα με τη μορφή οδηγιών που κάνει ερωτήματα, όπου κάθε εντολή (Query) εκτελείται ξεχωριστά σε πραγματικό χρόνο μέσω της βάσης δεδομένων.

  • SQL Μπορεί να ενσωματωθεί σε άλλες γλώσσες προγραμματισμού.
  • Το SQL Injection είναι η πράξη «ένεσης» ενός κακόβουλου κώδικα μέσα σε ένα υπάρχον ερώτημα.
  • Το SQL Injection χρησιμοποιείται για τη συλλογή δεδομένων (προσωπικών) / εκτέλεση κακόβουλου κώδικα στο λειτουργικό σύστημα ή και την πρόκληση «ζημιάς» στην βάση δεδομένων.

Παραπομπές:

  1. SQL Wikipedia

Πηγή άρθρου: https://planet.ellak.gr/        https://cerebrux.net

Leave a Comment