Τον περασμένο μήνα, συζητήθηκε το θέμα ευπάθειας XSS της Google και παρείχε ένα παράδειγμα που δείχνει αυτό. Εγώ was ελπίζοντας να επισημάνετε τον λόγο χαρακτήρας κωδικοποιώ συνέπεια είναι σημαντικό, αλλά προφανώς το addslashes() έναντι mysql_real_escape_string() συζήτηση συνεχίζεται. Αποδεικνύοντας την ευπάθεια XSS της Google είναι αρκετά εύκολο. Αποδεικνύοντας μια επίθεση του SQL ένεση που έχει ανοσία σε addslashes() είναι λίγο πιο περίπλοκη, αλλά ακόμα αρκετά απλή.Σε GBK, 0xbf27 δεν είναι έγκυρος χαρακτήρας πολυ-ψηφιολέξεων, αλλά είναι 0xbf5c. Ερμηνευθεί ως μονού-byte χαρακτήρες, 0xbf27 είναι 0xbf (ΒΏ) ακολουθούμενη από την 0x27 (') και 0xbf5c είναι 0xbf (ΒΏ), ακολουθούμενη από 0x5c ().Πώς αυτό βοηθάει; Αν θέλω να επιχειρήσει μια επίθεση του SQL ένεση σε μια βάση δεδομένων MySQL, έχοντας μονά εισαγωγικά με αριστερόστροφη κάθετο είναι ένα bummer. Εάν χρησιμοποιείτε addslashes(), ωστόσο, είμαι στην τύχη. Όλη η ανάγκη ι να κάνει είναι να εισφέρει κάτι σαν 0xbf27, και addslashes() τροποποιεί αυτό να γίνει 0xbf5c27, μια έγκυρη χαρακτήρων πολλών byte που ακολουθείται από ένα ενιαίο απόσπασμα. Με άλλα λόγια, να κάνω την ένεση με επιτυχία ένα μονό εισαγωγικό παρά τη διαφυγή σας. Αυτό οφείλεται στο γεγονός ότι 0xbf5c ερμηνεύεται ως ένας χαρακτήρας, όχι δύο. Ωχ, πηγαίνει εκεί την ανάστροφη κάθετο.Πάω να χρησιμοποιήσετε την MySQL 5.0 και επέκταση mysqli της PHP για αυτήν την επίδειξη. Αν θέλετε να δοκιμάσετε αυτό τον εαυτό σας, βεβαιωθείτε ότι χρησιμοποιείτε GBK. Άλλαξα ακριβώς σου /etc/my.cnf, αλλά αυτό είναι επειδή είμαι δοκιμή σε τοπικό επίπεδο:
Μεταφράζονται, παρακαλώ περιμένετε..
