코드는 아래와 같다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void setup()
{
setvbuf(stdin,0,2,0);
setvbuf(stdout,0,2,0);
setvbuf(stderr,0,2,0);
}
int main(void)
{
setup();
char buf[0x30] = {0, };
printf("Input : ");
gets(buf);
if(strlen(buf) > sizeof(buf))
{
puts("This is Buffer Overflow !");
system("cat /home/BOF/flag");
exit(1);
}
else
{
puts("If you trigger Buffer Overflow, you can get flag!");
exit(1);
}
}
|
cs |
문자를 0x30초과 입력하면 sizeof(buf)사용자 입력값가 strlen(buf)buf길이 0x30보다 더 커지므로 flag를 출력하게 된다.
0x30은 십진수로 48이다.
'Layer7 > CTF & Wargame' 카테고리의 다른 글
Write-up: [Logcon #4] [crypto] 나연아 사랑해 (0) | 2021.01.17 |
---|---|
Write-up: [고등해커3] [Reversing] OXR (0) | 2020.12.19 |
Write-Up: [고등해커3][Crypto] Caesar Cipher (0) | 2020.12.19 |
Write-Up: [고등해커3][Misc] Math World (0) | 2020.12.19 |
Write-Up: [고등해커3][Misc] Netcat (0) | 2020.12.19 |