Hoe kwetsbaarheden in Format String te benutten

Inleiding

In de vorige artikelen hebben we gesproken over afdrukfuncties, format strings en format string kwetsbaarheden. Dit artikel geeft een overzicht van hoe format String kwetsbaarheden kunnen worden benut. In dit artikel beginnen we met het oplossen van een eenvoudige uitdaging om een geheim uit het geheugen te lekken. In het volgende artikel zullen we een ander voorbeeld bespreken, waar we een kwetsbaarheid voor een format string en een kwetsbaarheid voor bufferoverflow zullen keten om een betere impact te creëren.

Hoe kunnen kwetsbaarheden in format string worden benut?

zoals vermeld in het vorige artikel, volgen enkele van de aanvallen mogelijk met behulp van format String kwetsbaarheden.

  • lekkende geheimen
  • Denial of Service
  • lekkende geheugenadressen
  • overschrijven geheugenadressen

in dit artikel bespreken we de eerste twee items.

Leaking secrets from stack

Hieronder volgt het kwetsbare programma dat we zullen gebruiken om de aanpak te begrijpen om een eenvoudige format string kwetsbaarheid te benutten om gegevens uit het geheugen te kunnen lezen.

# inclusief <stdio.h>

int main(int argc, char *argv){

char *secret = “[email protected]”;

printf (argv));

}

zoals we kunnen merken, het programma is kwetsbaar voor string kwetsbaarheid te formatteren, omdat de printf-functie ontvangt input van de gebruiker en drukt het af. Opgemerkt moet worden dat er geen formaatspecificatie gebruikt in de printf-functie waardoor het programma kwetsbaar.

laat ons het programma uitvoeren met behulp van gdb, controleer de demontage van de hoofdfunctie en stel een breekpunt in op het adres van printf aanroep.

$ gdb ./kwetsbaar

gef➤ disass main

Dump of assembler code for function main:

0x0000000000401136 <+0>: endbr64

0x000000000040113a <+4>: push rbp

0x000000000040113b <+5>: mov rbp,RSP

0x000000000040113e <+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…)

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.