Competion with multiple security challenges. The goal is to retrieve the flag of a challenge to earn the corresponding points.
consiste à étudier un objet pour en déterminer le fonctionnement interne ou la méthode de fabrication.
Wikipedia
Le binaire
Le binaire
Variables globales / statiques initialisées
Le binaire
Variables globales / statiques initialisées
Variables globales / statiques non initialisées
Le binaire
Variables globales / statiques initialisées
Variables globales / statiques non initialisées
Heap : mémoire gérée dynamiquement (malloc, realloc, free...)
Le binaire
Variables globales / statiques initialisées
Variables globales / statiques non initialisées
Heap : mémoire gérée dynamiquement (malloc, realloc, free...)
Stack : variables locales
Emplacement mémoire interne à un processeur
static int increment(int number)
{
return number + 1;
}
int main(void)
{
int index = 0;
char buffer[10] = {1};
index = increment(index);
...
...
return index;
}
static int increment(int number)
{
return number + 1;
}
int main(void)
{
int index = 0;
char buffer[10] = {1};
index = increment(index);
...
...
return index;
}
0
...
ESP
EBP
static int increment(int number)
{
return number + 1;
}
int main(void)
{
int index = 0;
char buffer[10] = {1};
index = increment(index);
...
...
return index;
}
0
[1, 1, 1, ..., 1]
...
ESP
EBP
static int increment(int number)
{
return number + 1;
}
int main(void)
{
int index = 0;
char buffer[10] = {1};
index = increment(index);
...
...
return index;
}
0
[1, 1, 1, ..., 1]
...
ESP
EBP
EIP
0
static int increment(int number)
{
return number + 1;
}
int main(void)
{
int index = 0;
char buffer[10] = {1};
index = increment(index);
...
...
return index;
}
0
[1, 1, 1, ..., 1]
...
ESP
EBP
EIP
EBP
0
static int increment(int number)
{
return number + 1;
}
int main(void)
{
int index = 0;
char buffer[10] = {1};
index = increment(index);
...
...
return index;
}
...
0
[1, 1, 1, ..., 1]
ESP
EBP
EIP
EBP
0
static int increment(int number)
{
return number + 1;
}
int main(void)
{
int index = 0;
char buffer[10] = {1};
index = increment(index);
...
...
return index;
}
0
[1, 1, 1, ..., 1]
...
EIP
EBP
...
0
[1, 1, 1, ..., 1]
ESP
EBP
EIP
EBP
0
STACKFRAME
static int increment(int number)
{
return number + 1;
}
int main(void)
{
int index = 0;
char buffer[10] = {1};
index = increment(index);
...
...
return index;
}
0
[1, 1, 1, ..., 1]
...
EIP
EBP
...
0
[1, 1, 1, ..., 1]
ESP
EBP
EIP
EBP
0
0
static int increment(int number)
{
return number + 1;
}
int main(void)
{
int index = 0;
char buffer[10] = {1};
index = increment(index);
...
...
return index;
}
0
[1, 1, 1, ..., 1]
...
EIP
EBP
...
0
[1, 1, 1, ..., 1]
ESP
EBP
EIP
EBP
0
0
static int increment(int number)
{
return number + 1;
}
int main(void)
{
int index = 0;
char buffer[10] = {1};
index = increment(index);
...
...
return index;
}
...
0
[1, 1, 1, ..., 1]
EIP
EBP
0
[1, 1, 1, ..., 1]
ESP
EBP
EIP
EBP
0
static int increment(int number)
{
return number + 1;
}
int main(void)
{
int index = 0;
char buffer[10] = {1};
index = increment(index);
...
...
return index;
}
...
0
[1, 1, 1, ..., 1]
EIP
EBP
0
[1, 1, 1, ..., 1]
ESP
EBP
EIP
0
static int increment(int number)
{
return number + 1;
}
int main(void)
{
int index = 0;
char buffer[10] = {1};
index = increment(index);
...
...
return index;
}
...
0
[1, 1, 1, ..., 1]
EIP
EBP
0
[1, 1, 1, ..., 1]
ESP
EBP
EIP
0
instruction destination, source
mov eax, 0x1
sub esp, 0xc
jmp 0x080494ab
cmp eax,0x5
jne 0x804948e
mov eax, DWORD PTR [ebx+0x4]
mov eax, BYTE PTR [ebx]
Challenges
https://challs.poc-innovation.com
Slides
http://slides.pwnh4.com/reverse
@PoCInnovation