kovalyoff
11.06.2025, 23:22
Интересная задачка (https://hackerlab.pro/categories/web/c86fdf72-6c63-406a-b06a-9a744bc26b61) на HackerLab.
https://forum.antichat.xyz/attachments/29119031/1749667777819.png
https://forum.antichat.xyz/attachments/29119031/1749667898936.png
Первое, что мы делаем - идем смотреть исходный код. В ходе изучения, нас привлекут файлы
upload.php
и
userprofile.php
в папке classes.
Видим, что
upload.php
позволяет нам загружать аватар пользователя, а
userprofile.php
содержит класс профиля и метод loadAvatar().
Что мы будем делать? А мы будем загружать свою "аватарку". Но перед этим создадим аккаунт и зайдем в него.
https://forum.antichat.xyz/attachments/29119031/1749668143583.png
Кстати, нам понадобится утилита
Burp Suite
. Версия Community Edition бесплатная, ее можно скачать здесь.
Итак, приступаем к созданию "аватарки". Это будет php код следующего содержания:
PHP:
theme = print_r(scandir('/'), true); ?>
scandir('/')
-наш главный инструмент. Он просканирует содержимое главной директории и выведет все файлы и папки, которые там есть.
Сохраним этот код в какую-нибудь папку и назовем, скажем,
avatarka.php
. Заходим в Burp Suite -> вкладка Proxy -> вкладка Intercept. Включаем Intercept и загружаем нашу "аватарку". Страница уходит в загрузку, а в Burp Suite мы видим следующее:
https://forum.antichat.xyz/attachments/29119031/1749669132131.png
Нас интересуют строки 17 и 18.
filename="avatarka.php"
мы меняем на
filename="avatarka.jpg"
, а в
Content-Type
меняем значение на
image/jpeg
. Делаем мы это для того, чтобы сервер принял наш файл, ведь, очевидно, файл php туда по умолчанию загрузить нельзя. В Burp Suite нажимаем
Forward
. Наша аватарка ломается.
https://forum.antichat.xyz/attachments/29119031/1749669390097.png
Но это ни в коем случае не плохо! Нам нужно посмотреть исходный код страницы. Там мы увидим следующее:
https://forum.antichat.xyz/attachments/29119031/1749669439092.png
Видим, что там затесался наш fl4g.txt. Осталось его вытащить. Меняем
avatarka.php
следующим образом:
PHP:
theme = file_get_contents('/fl4g.txt'); ?>
И, повторяя те же шаги с Burp Suite, выводим наш флаг в исходный код.
Если кто-то захочет изучить тему подробнее, такая уязвимость называется
local file inclusion
. Она позволяет выполнять локальные файлы на сервере.
https://forum.antichat.xyz/attachments/29119031/1749667777819.png
https://forum.antichat.xyz/attachments/29119031/1749667898936.png
Первое, что мы делаем - идем смотреть исходный код. В ходе изучения, нас привлекут файлы
upload.php
и
userprofile.php
в папке classes.
Видим, что
upload.php
позволяет нам загружать аватар пользователя, а
userprofile.php
содержит класс профиля и метод loadAvatar().
Что мы будем делать? А мы будем загружать свою "аватарку". Но перед этим создадим аккаунт и зайдем в него.
https://forum.antichat.xyz/attachments/29119031/1749668143583.png
Кстати, нам понадобится утилита
Burp Suite
. Версия Community Edition бесплатная, ее можно скачать здесь.
Итак, приступаем к созданию "аватарки". Это будет php код следующего содержания:
PHP:
theme = print_r(scandir('/'), true); ?>
scandir('/')
-наш главный инструмент. Он просканирует содержимое главной директории и выведет все файлы и папки, которые там есть.
Сохраним этот код в какую-нибудь папку и назовем, скажем,
avatarka.php
. Заходим в Burp Suite -> вкладка Proxy -> вкладка Intercept. Включаем Intercept и загружаем нашу "аватарку". Страница уходит в загрузку, а в Burp Suite мы видим следующее:
https://forum.antichat.xyz/attachments/29119031/1749669132131.png
Нас интересуют строки 17 и 18.
filename="avatarka.php"
мы меняем на
filename="avatarka.jpg"
, а в
Content-Type
меняем значение на
image/jpeg
. Делаем мы это для того, чтобы сервер принял наш файл, ведь, очевидно, файл php туда по умолчанию загрузить нельзя. В Burp Suite нажимаем
Forward
. Наша аватарка ломается.
https://forum.antichat.xyz/attachments/29119031/1749669390097.png
Но это ни в коем случае не плохо! Нам нужно посмотреть исходный код страницы. Там мы увидим следующее:
https://forum.antichat.xyz/attachments/29119031/1749669439092.png
Видим, что там затесался наш fl4g.txt. Осталось его вытащить. Меняем
avatarka.php
следующим образом:
PHP:
theme = file_get_contents('/fl4g.txt'); ?>
И, повторяя те же шаги с Burp Suite, выводим наш флаг в исходный код.
Если кто-то захочет изучить тему подробнее, такая уязвимость называется
local file inclusion
. Она позволяет выполнять локальные файлы на сервере.