SQL Injection কি ? কেন আমরা 1'or'1'='1 টাইপের কোড গুলা ব্যাবহার করি? তার আগে আসুন হাল্কা একটা জিনিস জেনে নেই।
ওয়েবসাইট কিভাবে কাজ করে??
একটা ওয়েবসাইট এর দুইটি পার্ট রয়েছে,Front end আর back end. Front end হচ্চে আমরা যখন একটি ওয়েবসাইট ভিজিট করি যা দেখি যেমন ওয়েবসাইটের কন্টেন্ট গুলা, ছবি ভিডিও, ডিজাইন ইত্যাদি(যেগুলা Html, CSS ইত্যাদি দ্বারা তৈরি করা হয়)।মোট কথায় আমরা একটা ওয়েবসাইট ভিজিট করে আমরা ওই ওয়েবসাইটের যে ইন্টারফেইস দেখতে পাই সেটাই। আর Back end এ একটা ওয়েবসাইট এর সার্ভার থাকে,ডাটাবেইজ থাকে।এবং একটা ওয়েবসাইট এর সবচেয়ে গুরুত্বপূর্ণ অংশ হচ্ছে সেই ওয়েবসাইটের ডাটাবেইজ(যেটা আমরা দেখিনা) । একটা ওয়েবসাইটের যতগুলা ফাইল, পোষ্ট, ট্যাগ, কতজন ইউজার রেজিষ্টারড আছে, সেই ওয়েবসাইটের কতজন এডমিন আছে,ছবি, কে কি পোস্ট করছে, কে কে সাইট ভিজিট করছে সব ডেটাবেইজে সেইভ থাকে।মোট কথায় একটা ওয়েবসাইটের চৌদ্দ গোষ্ঠীর তথ্য আপনি সেই ওয়েবসাইটের ডাটাবেইজে পাবেন।সেই ডাটাবেইজ থেকে আপনি বের করতে পারবেন ইউজারদের আইডি, পাসওয়ার্ড, ইউজারদের তথ্য,এডমিন দের তথ্য,এডমিনদের আইডি পাসওয়ার্ড। মানে একটা ওয়েবসাইটের মেরুদণ্ড হচ্ছে তার ডাটাবেইজ। একটা ওয়েবসাইটের ডাটাবেইজ পেয়ে যাবেন মানে আপনি ওয়েবসাইটের সব পেয়ে গেছেন।
কথা হচ্ছে ধাঁন বানতে শিবের গান গাইলাম কেনো তাইতো????? এইবার আসেন মুল কথায়,
SQL কি?
দাড়ান তার আগে আরেকটু বলে নেই। SQL কি? SQL হচ্চে একপ্রকার কুয়েরি ল্যাংগুয়েজ। এটা হচ্ছে একটু আগে যেই ডাটাবেইজ এর কথা বল্লাম সেই ডাটাবেইজ এ ডাটা ইনপুট করানো বা বা খুজে বের করার জন্য ব্যাবহার করা হয়।একটা ওয়েবসাইট এর Back End এ সবসময়ই কিছু কোড রান হতে থাকে আর জানেনইতো যে ডেটাবেজ থেকে sql ডাটা রিট্রিভ করে থাকে।এখন যেসব ওয়েবসাইট এর back end পিএইচপি এবং মাইএসকিএল ব্যাবহার করে বানানো হয় এবং মাইএসকিএল ডাটাবেইজ ব্যাবহার করে সেসব ওয়েবসাইট sql injection করা যায়( প্যানিক হওয়ার প্রয়োজন নাই,গুগল এ যান PHP, Mysql কি হালকা ধারণা নিয়ে নেন,বুঝে যাবেন)
লগিন প্যানেল কিভাবে কাজ করে ?
আরেকটা কথা। আপনারা সবাই ফেইসবুক ব্যাবহার করেন। মনে আছে? প্রথমে আপনি একটি ইউজার নেম এবং পাস দিয়ে সাইনআপ করছিলেন? পরবর্তীতে প্রতিবার লগইন করার সময় সঠিক আইডি পাস দিলেই আইডিতে লগইন করতে পারতেন। কিভাবে হলো? আপনি যখন রেজিষ্ট্রেশন করেছিলেন ফেইসবুক এর ডাটাবেইজ এগুলা সেইভ করে রেখেছিল। পরবর্তীতে আপনি লগইন করার সময় যখন আইডি পাস দিতেন তখন ফেইসবুক এর ডাটাবেইজ আপনার যে আইডি পাস সেইভ করা আছে সেই তথ্যের সাথে মিলে গেলে লগইন হয়ে যায়। ভুল আইডি পাস দিলে হয়না।
এবার আসি আসল কথায়। ওয়েবসাইট এর লগইন প্যানেল এ ইউজার নেইম আর পাস থাকে তাইনা? এখন আপনি যখন ইউজার নেইম আর পাসওয়ার্ড দিবেন সেটা যদি ডাটাবেইজ এ থাকে তাহলেই আপনি লগইন করতে পারবেন। ভুল দিলে ডাটাবেইজ সেই আইডি পাস চিনবেনা কারন তার কাছে সেইগুলা সেইভ নাই।তখন লগইন হবেনা। কাহিনী টা বুঝুন। যখনই আপনি কোন ইউজার নেইম আর পাস দিবেন সেটা ভেরিফাই এর জন্য ডাটাবেইজ এ থাকা তথ্যের সাথে মিলাবে। দাড়ান আরো সহজ করে দেই। ধরুন আপনি একটা ওয়েবসাইটের এডমিন। এখন আপনার ইউজার নেইম হচ্চে "বল্টু" আর পাসওয়ার্ড হচ্ছে " বল্টু+জরিনা " তারমানে ডাটাবেইজ এটা সেইভ করে রাখসে যে "বল্টু " ইউজার নেইম এবং " বল্টু+জরিনা " পাসওয়ার্ড ওয়ালা একজন এডমিন আছে।তাই যখনই লগইন ফর্মে যে কেউ ইউজার নেইম হিসেবে " বল্টু " আর পাসওয়ার্ড হিসেবে " বল্টু +জরিনা " লিখবে, ডাটাবেজ বুঝে যাবে যে এইটা আমার বল্টু কারন তার কাছে সেইভ করা ইউজার নেইম আর পাসওয়ার্ড মিলে গেছে, তখন সে লগইন হয়ে যাবে। আর না মিল্লে সে লগইন হবেনা। কারন ডাটাবেইজ এর সাথে মিলে নাই ।
SQL Injection কিভাবে কাজ করে ?
এখন আসেন মেইন কথায়। sql এ একটা কোয়েরি আছে, সিলেক্ট কুয়েরি।এটা কি করে? যখন আপনি লগইন ফর্মে আইডি পাসওয়ার্ড দিয়ে সাবমিট করেন তখন সিলেক্ট কুয়েরি Back end কাজ করে। সহজ ভাষায় বল্লে জিনিসটা এমন যে, ডাটাবেইজ এর সাথে মিলিয়ে দেখ এই ইউজার নেইম আর পাসওয়ার্ড টা সেইভ আছে কিনা। মানে একজন যে ইজার নেইম আর পাসওয়ার্ড টা দিসে সেই ইউজার নেম আর পাসওয়ার্ড টা ডাটাবেইজ এ আছে কিনা। থাকলে লগইন হবে। না থাকলে ইরর দেখাবে। এখন হ্যাকার রা কি করে? তারা ওই সিলেক্ট কুয়েরি টা কে ভ্যাবাচ্যাকা খাইয়ে দেয়।😁😂
ধরুন প্রথমে যেকোনো একটা ইজারনেইম দিয়ে দেয় তারপর একটা শর্ত যোগ করে দেয় যেমন or'1=1. এখন এটা সবাই জানে যে 1=1 ই হয় এটা চিরন্তন সত্য।কারন যেকোন একটা শর্ত সত্যি করতেই হয়।এখন 1=1 তো সবসময় সত্যি। এখন সিলেক্ট কুয়েরি কি করে? যখন আপনি ইউজার নেইম নেইম হিসেবে ওই কোড গুলা দেন ( ' ) ব্যাবহার করে, ব্যাপারটা এমন হয়ে যায় যে সে ডেটাবেজ এ খুজে যে ইউজার নেইম = যাই দেন ' or'1'='1. এখন 1=1 যেহেতু সত্যি তাই আর কিচ্চু খেয়াল করেনা,সেটা এক্সিকিউট হয়ে যায় এবং আপনাকে লগইন করিয়ে দেয়।
এভাবেই লগইন পেইজগুলা হ্যাক হয়ে থাকে। (সব সাইট যে হ্যাক হবে এমন কথা নেই) তাছাড়া শুধু 1'or'1'='1 ছাড়াও আরো অনেক basic sql injection queries আছে, গুগল মামারে ধরেন পেয়ে যাবেন । কিভাবে খুজবেন হিন্টস আমার কথার মধ্যেই আছে।)
পুনশ্চঃ কোন বাংলাদেশি সাইট এর উপর প্র্যাকটিস করবেন না এবং সাইট অন্য যে দেশেরই হোক।সাইট এর কোন কিছু পরিবর্তন করবেন না।
- drafted on January 2020