First Fit
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wakati unapoachia kumbukumbu katika programu ukitumia glibc, "bins" tofauti zinatumika kusimamia vipande vya kumbukumbu. Hapa kuna maelezo rahisi ya hali mbili za kawaida: bins zisizo na mpangilio na fastbins.
Wakati unapoachia kipande cha kumbukumbu ambacho si kipande cha haraka, kinakwenda kwenye bin isiyo na mpangilio. Bin hii inafanya kazi kama orodha ambapo vipande vipya vilivyoachiliwa vinaongezwa mbele (mwenye "kichwa"). Wakati unapoomba kipande kipya cha kumbukumbu, mtoaji anatazama bin isiyo na mpangilio kutoka nyuma (mwenye "mkia") ili kupata kipande ambacho ni kikubwa vya kutosha. Ikiwa kipande kutoka kwenye bin isiyo na mpangilio ni kikubwa kuliko unavyohitaji, kinagawanywa, ambapo sehemu ya mbele inarudishwa na sehemu iliyobaki inabaki kwenye bin.
Mfano:
Unapotoa 300 bytes (a
), kisha 250 bytes (b
), unapoachia a
na kuomba tena 250 bytes (c
).
Wakati unapoachia a
, inakwenda kwenye bin isiyo na mpangilio.
Ikiwa kisha unapoomba 250 bytes tena, mtoaji anapata a
kwenye mkia na kuigawanya, akirudisha sehemu inayofaa ombi lako na kuweka iliyobaki kwenye bin.
c
itakuwa ikielekeza kwenye a
ya awali na kujazwa na a's
.
Fastbins hutumiwa kwa vipande vidogo vya kumbukumbu. Tofauti na unsorted bins, fastbins huongeza vipande vipya kwenye kichwa, na kuunda tabia ya last-in-first-out (LIFO). Ikiwa unahitaji kipande kidogo cha kumbukumbu, mtoa huduma atavuta kutoka kichwa cha fastbin.
Mfano:
Unapoweka vipande vinne vya byte 20 kila kimoja (a
, b
, c
, d
).
Unapofungua kwa mpangilio wowote, vipande vilivyofunguliwa vinaongezwa kwenye kichwa cha fastbin.
Ikiwa kisha unahitaji kipande cha byte 20, mtoa huduma atarudisha kipande kilichofunguliwa hivi karibuni kutoka kichwa cha fastbin.
ARM64. Tumia baada ya kuachia: Tengeneza kitu cha mtumiaji, kiache, tengeneza kitu kinachopata kipande kilichoachwa na kuruhusu kuandika ndani yake, kufuta nafasi ya mtumiaji->password kutoka kwa ile ya awali. Tumia tena mtumiaji ili kupita ukaguzi wa nenosiri
Programu inaruhusu kuunda noti. Noti itakuwa na taarifa za noti katika malloc(8) (ikiwa na kiashiria kwa kazi inayoweza kuitwa) na kiashiria kwa malloc nyingine (<size>) yenye maudhui ya noti.
Shambulio litakuwa kuunda noti 2 (note0 na note1) zikiwa na maudhui makubwa ya malloc kuliko saizi ya taarifa za noti na kisha kuziachia ili ziingie kwenye fast bin (au tcache).
Kisha, tengeneza noti nyingine (note2) yenye saizi ya maudhui 8. Maudhui yatakuwa katika note1 kwani kipande kitarejelewa, ambapo tunaweza kubadilisha kiashiria cha kazi ili kiashirie kazi ya ushindi na kisha Tumia-Baada-ya-Kuachia noti1 ili kuita kiashiria kipya cha kazi.
Inawezekana kugawa kumbukumbu, kuandika thamani inayotakiwa, kuachia, kuigawa tena na kwa kuwa data ya awali bado ipo, itatendewa kulingana na muundo mpya unaotarajiwa katika kipande, na kufanya iwezekane kuweka thamani ili kupata bendera.
Katika kesi hii inahitajika kuandika 4 ndani ya kipande maalum ambacho ndicho cha kwanza kinachogawiwa (hata baada ya kuachia kwa nguvu yote). Kila kipande kipya kinachogawiwa kina nambari yake katika orodha ya kiashiria. Kisha, gawiwa vipande 4 (+ ile iliyogawiwa awali), ya mwisho itakuwa na 4 ndani yake, ziache na kulazimisha kugawiwa tena kwa cha kwanza, ambacho kitatumia kipande cha mwisho kilichoachwa ambacho ndicho chenye 4 ndani yake.