Kuinka hyödyntää Format String-haavoittuvuuksia

Johdanto

edellisissä artikkeleissa keskusteltiin tulostustoiminnoista, format stringsistä ja format string-haavoittuvuuksista. Tämä artikkeli tarjoaa yleiskuvan siitä, miten muoto merkkijono haavoittuvuuksia voidaan hyödyntää. Tässä artikkelissa aloitamme ratkaisemalla yksinkertaisen haasteen vuotaa salaisuus ulkomuistista. Seuraavassa artikkelissa, keskustelemme toinen esimerkki, jossa me ketjuttaa muodossa merkkijono haavoittuvuus ja puskurin ylivuoto haavoittuvuus luoda parempaa vaikutusta.

miten merkkijonon haavoittuvuuksia voidaan hyödyntää?

kuten edellisessä artikkelissa mainittiin, Seuraavassa on joitakin mahdollisia hyökkäyksiä käyttäen Format String haavoittuvuuksia.

  • vuotavat salaisuudet
  • Palvelunesto
  • vuotavat muistiosoitteet
  • korvaavat muistiosoitteet

tässä artikkelissa käsitellään kahta ensimmäistä kohtaa.

Stackin salaisuuksien vuotaminen

Seuraavassa on haavoittuva ohjelma, jota käytämme ymmärtääksemme lähestymistavan käyttää hyväksi yksinkertaista formaattimerkkijonon haavoittuvuutta, jotta voimme lukea tietoja muistista.

#include <stdio.h>

int main (int argc, char *argv){

char * secret = ”[email protected]”;

printf (argv);

}

kuten voimme huomata, ohjelma on altis muotoilla merkkijono haavoittuvuus, koska printf-toiminto vastaanottaa käyttäjän syötteen ja tulostaa sen. On huomattava, että printf-funktiossa ei ole formaattimääritettä, mikä jättää ohjelman haavoittuvaksi.

ajetaan ohjelma GDB: llä, tarkistetaan päätoiminnon purkaminen ja asetetaan keskeytyspiste printf-puhelun osoitteeseen.

$ gdb ./haavoittuva

gefċ disass main

dump of assembler code for function main:

0x0000000000401136 <+0>: endbr64

0x00000000040113a <+4>: push RBP

0x000000000040113b <+5>: MOV RBP,RSP

0x00000000040113e <+8>: sub rsp,0x20

0x0000000000401142 <+12>: mov DWORD PTR ,edi

0x0000000000401145 <+15>: mov QWORD PTR ,rsi

0x0000000000401149 <+19>: lea rax, # 0x402004

0x0000000000401150 <+26>: mov QWORD PTR ,rax

0x0000000000401154 <+30>: mov rax,QWORD (Read more…)

Vastaa

Sähköpostiosoitettasi ei julkaista.