![]() |
Взлом через восстановление пароля[Нужна помощь]
Здравствуйте,есть форма восстановления пароля
с примерно таким кодом PHP код:
PHP код:
|
Я так понимаю это происходит на этапе формирования запроса здесь, как сформировать запрос в форме ввода почты для восстановления пароля?
Код:
$q = '' . 'select * from hm2_users where username=\'' . $email . '\' or email=\'' . $email . '\' and (status=\'on\' or status=\'suspended\')'; |
Есть смысл пробовать так в поле ввода логина\мыла
admin\';update hm2_users set pswd ='test' where id =1/* Подскажите,пожалуйста, хоть в правильном направлении иду или нет. |
ну тут скуля на лицо, нет проверки на то, что значение при запросе только одно, т.е. просто написав емайл админа и потом свое мыло (мы должны быть предварительно зарегены на сайте и иметь живое мыло), т.е. типо в сторону or копать, т.е. например такой запрос будет правильный:
$q = 'select * from hm2_users where username= '' . $email . ' or email=' . $email . ' or email = "а_тут_email_ взломщика"' ; и вернет данные как по админу, так и по нашему акку, и все последующие действия будут верны как для почты админа, так и для почты хеккера, т.е. мы МОЖЕМ поменять пароль как себе, так и админу а проверка на id, которая типо существует, работает как раз на хеккера: if (($settings['demomode'] == 1 AND $row['id'] <= 3)) { } else - тут как раз наоборот должно быть типо "Хеккер дай!" т.е. это ровным счетом означает, что чувак, надо чтобы у тебя id было >3, флаг тебе в руки ну а дальше идет while, который делает необходимые действия СО ВСЕМИ РЕЗУЛЬТАТАМИ первого sql запроса (где выбирается юзер по email), которых может быть не один, ибо проверки нет PS: Ну и не фильтруется нифига ничего, это понятно. Диагноз не факт что правильный, беглый просмотр т.е. при восстановлении вписать в поле мыла чонить вроде этого: admin@mail.ru' or email='hekker@mail.ru |
Вот пытаюсь подставить сюда
Код:
$q = '' . 'select * from hm2_users where username=\'' . $email . '\' or email=\'' . $email . '\' and (status=\'on\' or status=\'suspended\')';Насколько я понимаю таким образом я закрою 1 юзернейм и будет закрыт 2, а дальше все исполнится как надо, НО ничего не выходит может это из-за Код:
$email = quote ($frm['email']);admin@thebestmoney.ru ' or email= 'aveo.ssx@gmail.com толку 0 -( Может кто-то еще что-то посоветует? |
понимаешь, не видя всего исходного кода, включая все функции и т.д.
$email = quote ($frm['email']); трудно что-то говорить. Но суть взлома по идее в этом |
quote подставляет слеши?
|
Вообще-то устранение уязвимостей денег стоит. Ссылку дал в личку. Основное тебе тут сказал. Дальше или сам, или извини
PS: Тут надо весь код нахрен переписывать, а не просто сказать "как" |
мне нужно просто узнать как юзать уязвимость,а вот как её править я уже сам разберусь!
Точнее будет сказать как разобраться со слешами подставляемыми к кавычкам.(если я не ошибаюсь) Вот не могу понять почему на такие данные в форме Код:
admin@thebestmoney.ru' or email= 'test@test.ruслеши подставляются насколько я понял+ судя по коду запросакавычки будут тоже закрыты для email и username |
Неужели ни у кого нету мыслей по реализации? Буду благодарен за любую помощь, идею или просто толковый совет!
|
| Время: 07:31 |