هک و امنیت

تشخیص باگ SQL

()

SQL زبان پرس و جوی ساخت یافته ای است که برای بازیابی و
دستکاری پایگاه داده بکار می‌رود. برای تشخیص باگ SQL ابتدا
به معرفی و سپس با بررسی آن به انجام یک مثال عملی می‌پردازیم.

باگ SQL injection چیست؟

تزریق کد اس کیو ال (SQL) می‌تواند یک جمله برای دریافت اطلاعات و یا
افزودن یک شرط همیشه درست برای اختلال در همه یا بخشی از پایگاه داده است.
این کار با سوء استفاده از نقص طراحی در برنامه های وب انجام می‌شود
تا از عبارات SQL برای اجرای کد SQL مخرب استفاده کند.

عملکرد باگ اس کیو ال

تزریق کد از طریق باگ SQL به نوع پایگاه داده بستگی دارد و به عبارت دیگر
باید گفت که فقط روی عبارات اس کیو ال dynamic (پویا) کار می‌کند. در واقع
یک عبارت dynamic یا پویا جمله ای است که در زمان اجرا با استفاده از پارامترهای
رمز عبور از فرم وب یا رشته پرس و جو URI تولید می شود. با یک مثال موضوع را واضح تر بیان می‌کنیم.
کد HTML زیر یک فرم لاگین است که در ادامه به شرح آن پرداختیم:

<form action=‘index.php’ method="post">

<input type="email" name="email" required="required"/>

<input type="password" name="password"/>

<input type="checkbox" name="remember_me" value="Remember me"/>

<input type="submit" value="Submit"/>

</form>
  • فرم فوق آدرس ایمیل را می پذیرد و پسورد آن را به فایل PHP با نام index.php ارسال می کند.
  • گزینه remember me یا “مرا به خاطر بسپار” برای ذخیره اطلاعات ورود به سیستم در کوکی است. که به صورت یک checkbox می‌باشد. از روش ارسال برای ارسال داده استفاده می کند.
کی ‌لاگر چیست؟ و چگونه اعطلاعات را پخش میکند
خواندن

مثال عملی باگ SQL

برای دقیق‌تر شدن در تشخیص باگ SQL فرض کنیم که کدی که برای کنترل کردن ID کاربر
بکار می‌رود به این صورت باشد :

SELECT * FROM users WHERE email = $_POST['email'] AND password = md5($_POST['password']);

در بالا پسورد با الگوریتم md5 رمزگذاری شده است.

موارد بیان شده را با یک مثال عملی شرح می‌دهیم:
ابتدا وارد این لینک شوید، سپس کد های زیر را مطابق تصویری بعد آن، وارد کنید.

کد زیر را در سمت چپ بنویسید( کد ایجاد جدول در SQL) :

CREATE TABLE `users` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `email` VARCHAR(45) NULL,
  `password` VARCHAR(45) NULL,
  PRIMARY KEY (`id`));
  
  
insert into users (email,password) values ('m@m.com
	',md5('abc'));

حال کد مقابل را برای بازیابی اطلاعات نوشته و سپس طبق تصویری که در ادامه آمده در سمت راست (Query SQL) می‌نویسیم:

select * from users;

مثال ایجاد و بازیابی اطلاعات در SQL

 

سپس بر روی گزینه Run کلیک می‌کنیم که نتیجه آن در ادامه آمده است:

نتیجه اجرا کد SQL

 

اطلاعات همچون نام کاربری admin@admin.sys و رمز ۱۲۳۴ به عنوان رمز ادمین فرض کنید.
که کد بازیابی آن با دانستن موارد بالا چنین است:

;(SELECT * FROM users WHERE email = ‘admin@admin.sys’ AND password = md5(‘1234’

حالا اگر هکر بخواهد آن را بدون اطلاعات چندانی بازیابی کند باید همان طور که اشاره شد یک کد همیشه درست تزریق کند که به این صورت است:

SELECT * FROM users WHERE email = 'xxx@xxx.xxx' OR 1 = 1 LIMIT 1 -- ' ] AND password = md5('1234');

شرط همیشه درست OR 1 = 1 LIMIT 1 که در کد بالا آمده فوت کوزه گری هکر برای بدست آوردن نام کاربریست، رمز هم که ایقدر ساده است با چند بار تزریق کد بدست می‌آید. کد فوق را در قسمت راست (Query SQL) سایت معرفی شده وارد کنید و بر روی Run کلیک کنید که نتیجه این است:

باگ XFS چیست؟ و اجرا آن روی سایت های آسیب پذیر | 2021
خواندن

نتیجه sql injection

چقدر این پست برای شما مفید بود?

لطفا برای امتیاز روی یک ستاره کلیک کنید.

Average rating / ۵. Vote count:

هیچ امتیازی تا الان ثبت نشده! اولین نفری باشید که به این پست امتیاز می دهید.

متاسفیم که این پست برای شما مفید نبود!

اجازه دهید این پست را بهبود ببخشیم!

به ما بگویید چگونه می توانیم این پست را بهبود ببخشیم؟

نمایش بیشتر

محمد حسین جعفری

ی آدم معمولی که هرچی بلده میخواد رو کنه

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا