У дадзеным артыкуле вырашым 25-е заданне з сайта
Арганізацыйная інфармацыяСпецыяльна для тых, хто хоча даведвацца нешта новае і развівацца ў любой са сфер інфармацыйнай і камп'ютарнай бяспекі, я буду пісаць і расказваць пра наступныя катэгорыі:
- PWN;
- крыптаграфія (Crypto);
- сеткавыя тэхналогіі (Network);
- рэверс (Reverse Engineering);
- стэганаграфія (Stegano);
- пошук і эксплуатацыя WEB-уразлівасцяў.
У дадатак да гэтага я падзялюся сваім досведам у кампутарнай крыміналістыцы, аналізе малвары і прашывак, нападах на бесправадныя сеткі і лакальныя вылічальныя сеткі, правядзенні пентэстаў і напісанні эксплоітаў.
Каб вы маглі даведвацца аб новых артыкулах, праграмным забеспячэнні і іншай інфармацыі, я стварыў
Уся інфармацыя прадстаўлена выключна ў адукацыйных мэтах. Аўтар гэтага дакумента не нясе ніякай адказнасці за любую шкоду, прычыненую каму-небудзь у выніку выкарыстання ведаў і метадаў, атрыманых у выніку вывучэння дадзенага дакумента.
Рашэнне задання otp
Працягваем другую частку. Скажу адразу, што складаней першага, але ў гэты раз не падаюць зыходны код праграмы. Не забываемся пра абмеркаванне тут (https://t.me/RalfHackerPublicChat) і тут (https://t.me/RalfHackerChannel). Пачнём.
Націскаем на абразок з подпісам otp. Нам даюць адрас і порт для падключэння.
Падлучаемся і аглядаемся на серверы.
Сцяг, які мы не можам прачытаць, праграма і яе зыходны код. Давайце паглядзім зыходнік.
Рабяром яго. Праграма прымае ў якасці аргумента пароль.
Далей у зменную otp захоўваецца рандомныя 16 байт.
У тэчцы tmp ствараецца файл са выпадковым імем (першыя 8 байт otp) і ў яго запісваецца рандомныя 8 байт (другія 8 байт otp).
Навошта-то і створанага файла счытваецца значэнне і параўноўваецца з уведзеным паролем.
Тут і прысутнічае ўразлівасць. Яна складаецца ў прамежкавым захаванні генераванага ліку ў файл. Мы можам абмежаваць памер файла, напрыклад да 0, тады пры запісе і счытванні з паролем будзе параўноўвацца 0. Зрабіць гэта можна так.
# ulimit -f 0
Цяпер запусцім праграму.
Атрымліваем памылку. Не бяда, ведб яе можна апрацаваць з дапамогай таго ж пітона.
python -c "import os, signal; signal.signal(signal.SIGXFSZ, signal.SIG_IGN); os.system('./otp 0')"
Атрымліваем сцяг і свае лёгкія 100 балаў. І мы працягваем: у наступным артыкуле закранем Web. Вы можаце далучыцца да нас у
Крыніца: habr.com