Cum se exploatează vulnerabilitățile șirului de Format

Introducere

în articolele anterioare, am discutat despre funcțiile de imprimare, șirurile de format și vulnerabilitățile șirului de format. Acest articol oferă o prezentare generală a modului în care pot fi exploatate vulnerabilitățile șirului de Format. În acest articol, vom începe prin rezolvarea unei simple provocări de a scurge un secret din memorie. În articolul următor, vom discuta un alt exemplu, în care vom înlănțui o vulnerabilitate a șirului de format și o vulnerabilitate a depășirii tamponului pentru a crea un impact mai bun.

Cum pot fi exploatate vulnerabilitățile șirului de format?

după cum sa menționat în articolul precedent, în urma sunt unele dintre atacurile posibile folosind vulnerabilități șir format.

  • Scurgeri secrete
  • negarea serviciului
  • Scurgeri adrese de memorie
  • suprascrierea adrese de memorie

în acest articol, să ne discuta primele două elemente.

Scurgeri secrete din stivă

în urma este programul vulnerabil vom folosi pentru a înțelege abordarea de a exploata o vulnerabilitate șir de format simplu pentru a putea citi datele din memorie.

#include < stdio.h >

int main (int argc, char *argv){

char * secret = „p @ ssw0rD”;

printf(argv);

}

după cum putem observa, programul este vulnerabil la vulnerabilitatea șirurilor de format, deoarece funcția printf primește intrarea utilizatorului și o imprimă. Trebuie remarcat faptul că nu există un specificator de format utilizat în funcția printf, lăsând astfel programul vulnerabil.

să rulăm programul folosind gdb, să verificăm dezasamblarea funcției principale și să configurăm un punct de întrerupere la adresa apelului printf.

$ gdb ./vulnerabile

gef➤ disass principal

Basculante de cod de asamblare pentru funcția principală:

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…)

Lasă un răspuns

Adresa ta de email nu va fi publicată.