Давай ті ка, обговоримо, як можна ламати PHP3-скрипти. Мене часто про це просять.
Наступний спосіб відноситься тільки до людей, які добре знають PHP. Фішка така: "root \ 0"! = "Root". Але strcmp ( "root \ 0". "Root") == true. Так що роби висновки. Наступний спосіб полягає в тому, що розмір відсилається інформації не перевіряється PHP3 (так само як і в Perl'е). Якщо відсилає інфа зберігається на сервері (наприклад, ГК, форум, реєстрація і т. Д.), То може виникнути помилка типу Out of Memory. Але це тільки в тому випадку, якщо максимальний розмір повідомлення не задати вручну. Є ще можливість вставки PHP3-скриптів в такі поля як textarea або . Якщо на екрані це буде Парс, то виполнются введені тобою команди. Приблизно такий спосіб я використовував в статті "Злом московського провайдера". Тільки там був Perl.
Відверто кажучи, з методів, які я навів тут, реально можуть допомогти тільки метод підміна перменная і останній. Просто теоретично можливий кожен, але я ще не зустрічав такого захисту. Насправді способів набагато більше і я продовжу про них розповідати в наступних номерах.
У багатьох програмістів, підписувати на розсилку виникне питання: а як же тоді захищатися? Ось саме їм і присвячується другий розділ статті. Найнадійніший метод - використовувати $ HTTP_REFERER. Що б його не підмінили треба використовувати тактику переходу від одного скрипта іншому. Тобто логін і пароль відправляються в скрипт login.php3, який після їх перевірки переводить Тебе на 1.php3, на якому стоїть редирект в enter.php3. $ HTTP_REFERER повинен дорівнювати 1.php3. Дізнатися на яку сторінку йде редирект неможливо, якщо тільки він не бачить шелла з доступом для читання з папці з CGI-скриптами. Але якщо у нього є шелл, навряд чи він буде ламати цей CGI-скрипт, адже там вже відкривається безмежне поле для експерементів з файлами налаштувань. Другий спосіб захисту більш корисний і надійний. Якщо логін і пароль правильний, то з файлу зчитуються права, якими володіє цей користувач під цим логіном і паролем у вигляді цифри. Потім за вигаданим тобою алгоритму логін пароль і права достуа шіфруфруются і заносяться в $ ID. Далі цей ID передається з скрипта в скрипти, в яких відбувається дешифрування і витягування цифри з правами. Цей спосіб більш надійний, неломающіеся безпосередньо і розмежуванням прав доступу. Якщо Ти застосуєш цей метод, будь впевнений, що Тебе не зламають, якщо тільки Ти туди не насажанную інших дірок. Але Ти їх не насадив, Ти ж людина розумна! Удачі тобі в твоєму нелегкій справі, системний адміністратор!