House of Force

Aunga mkono HackTricks

Taarifa Msingi

Kanuni

  • Mbinu hii ilisahihishwa (hapa) na kutoa kosa hili: malloc(): corrupted top size

  • Unaweza jaribu kanuni kutoka hapa kuitumia kwa majaribio.

Lengo

  • Lengo la shambulizi hili ni kuweza kutenga kipande katika anwani maalum.

Mahitaji

  • Kujaa ambayo inaruhusu kubadilisha ukubwa wa kichwa cha kipande cha juu (k.m. -1).

  • Kuweza kudhibiti ukubwa wa kutengwa kwa rundo

Shambulizi

Ikiwa muhusika anataka kutenga kipande katika anwani P ili kubadilisha thamani hapa. Anza kwa kubadilisha ukubwa wa kichwa cha kipande cha juu na -1 (labda kwa kujaa). Hii inahakikisha kwamba malloc haitatumia mmap kwa kutenga yoyote kwani Kipande cha Juu kitakuwa na nafasi ya kutosha.

Kisha, kuhesabu umbali kati ya anwani ya kipande cha juu na nafasi ya lengo ya kutenga. Hii ni kwa sababu malloc na ukubwa huo utafanywa ili kuhamisha kipande cha juu hadi nafasi hiyo. Hivi ndivyo tofauti/ukubwa unaweza kuhesabiwa kwa urahisi:

// From https://github.com/shellphish/how2heap/blob/master/glibc_2.27/house_of_force.c#L59C2-L67C5
/*
* The evil_size is calulcated as (nb is the number of bytes requested + space for metadata):
* new_top = old_top + nb
* nb = new_top - old_top
* req + 2sizeof(long) = new_top - old_top
* req = new_top - old_top - 2sizeof(long)
* req = target - 2sizeof(long) - old_top - 2sizeof(long)
* req = target - old_top - 4*sizeof(long)
*/

Kwa hivyo, kutenga ukubwa wa lengo - old_top - 4*sizeof(long) (long 4 ni kwa sababu ya metadata ya kipande cha juu na ya kipande kipya kilipopangiwa) kutahamisha kipande cha juu kwa anwani tunayotaka kubadilisha. Kisha, fanya malloc nyingine kupata kipande kwenye anwani ya lengo.

Marejeo & Mifano Mingine

Support HackTricks

Last updated