Web applications always operate with numbers. However, things don’t always go the way developers intended. Let’s discuss abnormal cases of working with number values and talk about exploiting vulnerabilities using them.
США. При стоимости одного доллара в 60 рубле й , сумма в 0,29 рубле й соответствует 0,00483333333333333333333333333333 долларов. Данная сумма будет округлена до двух знаков после запято й , т. е. до 0,01 доллара (один цент). Затем злоумышленник переводит 0,01 доллара обратно в рубли и получает 0,60 рубле й . Таким образом злоумышленник «выигрывает» 0,31 рубле й . ZN 2013
или 0xFF, а сравнение подобных чисел, еще и на старых версиях PHP, еще и с учетом нюансов сравнения в языке PHP, приводило к самым неожиданным последствиям.
знаком + Умножения, деление (в том числе на 0) Граничные и числа с переполнением для разной разрядности Заведомо некорректные (это ж фаззинг) числа с множественными точками True, False, NULL, NaN, NIL, None, undefined
Positive Technologies (запрещенная в США организация) https://habr.com/ru/company/pt/blog/156133/ https://habr.com/ru/company/pt/blog/149746/ https://xakep.ru/2018/04/12/ethereum-cheating/ https://static.ptsecurity.com/phdays/presentations/phdays-9-luarocks- vulnerabilities.pdf (из последнего)
было отправлено несколько токенов. Идея была в том, что отправив два запроса на восстановление пароля, на собственную почту и жертве, придут одинаковые или минимально различимые коды. После множества попыток было получено максимальное приближение: Почта 1: 56794300990116 Почта 2: 56756301990116
Date: Mon, 08 Jun 2020 08:14:10 GMT Переводим эту дату в timestamp. В данном случае это будет 1591604050. Сравниваем с полученным кодом - 50501015409368. (А теперь посмотри на цифры внимательно).
это делают бинарщики. Есть простор для мутаций чисел и поисков аномалий в их обработке (сравнении, изменении) • Случайности не случайны, если не используются криптографически безопасные алгоритмы • Nodejs и прочие ребята с приведениями типов вообще отдельная тема