House of Force
Last updated
Last updated
Jifunze na zoezi la AWS Hacking:Mafunzo ya HackTricks ya Mtaalam wa Timu Nyekundu ya AWS (ARTE) Jifunze na zoezi la GCP Hacking: Mafunzo ya HackTricks ya Mtaalam wa Timu Nyekundu ya GCP (GRTE)
Mbinu hii ilisahihishwa (hapa) na kutoa kosa hili: malloc(): corrupted top size
Unaweza jaribu kanuni kutoka hapa kuitumia kwa majaribio.
Lengo la shambulizi hili ni kuweza kutenga kipande katika anwani maalum.
Kujaa ambayo inaruhusu kubadilisha ukubwa wa kichwa cha kipande cha juu (k.m. -1).
Kuweza kudhibiti ukubwa wa kutengwa kwa rundo
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:
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.
Lengo la hali hii ni ret2win ambapo tunahitaji kubadilisha anwani ya kazi ambayo itaitwa na anwani ya kazi ya ret2win
Binary ina kipeperushi ambacho kinaweza kutumiwa kubadilisha ukubwa wa kipande cha juu, ambacho kimebadilishwa kuwa -1 au p64(0xffffffffffffffff)
Kisha, inahesabiwa anwani ya mahali ambapo kidole cha kubadilisha kipo, na tofauti kutoka kwa nafasi ya sasa ya kipande cha juu hadi hapo inaendana na malloc
Hatimaye kipande kipya kinapewa ambacho kitahusisha lengo lililohitajika ndani yake ambalo limebadilishwa na kazi ya ret2win
Katika Ingiza jina lako:
kuna udhaifu wa awali ambao unaruhusu kuvuja kwa anwani kutoka kwa kipande cha heap
Kisha katika kazi za Org:
na Host:
, ni rahisi kujaza 64B ya kidole cha s
wakati unaulizwa kwa jina la shirika, ambalo kwenye steki linafuatwa na anwani ya v2, ambayo kisha inafuatwa na jina la mwenyeji lililotajwa. Kisha, strcpy itakuwa inakopi yaliyomo ya s kwa kipande cha ukubwa wa 64B, ni rahisi kubadilisha ukubwa wa kipande cha juu na data iliyowekwa ndani ya jina la mwenyeji.
Sasa kwamba kuandika kiholela kunawezekana, GOT ya atoi
ilibadilishwa kuwa anwani ya printf. basi inawezekana kuvuja anwani ya IO_2_1_stderr
na %24$p
. Na kuvuja huku kwa libc ilikuwa inawezekana kubadilisha tena GOT ya atoi
na anwani ya system
na kuipiga kama paramu /bin/sh
Njia mbadala iliyopendekezwa katika andiko hili lingine, ni kubadilisha free
na puts
, na kisha kuongeza anwani ya atoi@got
, kwenye kidole ambacho baadaye kitafutwa ili kuvuja na kwa kuvuja hii kubadilisha tena atoi@got
na system
na kuipiga na /bin/sh
.
Kuna UAF inayoruhusu kutumia tena kipande kilichofutwa bila kufuta kidole. Kwa sababu kuna njia za kusoma, ni rahisi kuvuja anwani ya libc kwa kuandika kidole kwa kazi ya bure katika GOT hapa na kisha kuita kazi ya kusoma.
Kisha, House of force ilitumiwa (kwa kudhuru UAF) kubadilisha ukubwa wa nafasi iliyobaki na -1, kutenga kipande kikubwa cha kutosha kufikia kitanzi cha bure, na kisha kutenga kipande kingine ambacho kitahusisha kitanzi cha bure. Kisha, andika kwenye kitanzi anwani ya system
, andika kwenye kipande "/bin/sh"
na hatimaye fungua kipande na yaliyomo ya herufi hiyo.
Jifunze & zoezi la Udukuzi wa AWS:Mafunzo ya HackTricks AWS Red Team Expert (ARTE) Jifunze & zoezi la Udukuzi wa GCP: Mafunzo ya HackTricks GCP Red Team Expert (GRTE)