https://github.com/JangJongMin/DogLang

위 프로그램을 AFL++이용해 퍼징 및 취약점을 발견해

7일이란 기간 내

해당 github의 Dockerfile로 구축한 컨테이너 내에서 쉘을 얻어내는 익스플로잇 성공과 그 과정

  1. 시도1: run_script-null 제거 카나리 릭
  2. 시도2: run_script-마스터 카나리 && OOB
  3. 시도3: run_script()-> parser() -> print_parser() OOB 카나리릭
  4. 시도4: Dockerfile으로 구축한 환경에서 repl() -> 손!!으로 main 리턴주소를 구해 libc_base를 구하고 -> 멍!!으로 free_hook을 system으로 덮기
  5. 시도5: repl() -> 손!!으로 main 리턴주소를 1바이트씩 구해 libc_base를 구하고 -> 멍!!으로 ret을 one_gadget으로 1바이트씩 덮기

*** **** 최종 exploit 성공 요약 **** ***

i)

해당 프로그램엔 버퍼오버플로우 취약점을 AFL++ 퍼저로 찾고

코드 리뷰로 OOB 취약점(1바이트 메모리를 읽는 함수, 1바이트 메모리를 덮을 수 있는 함수)를 찾음

하지만 버퍼오버플로우는 코드에 대응책이 있어서 이를 이용해 쉘을 얻는 것은 불가했음

ii)

OOB 취약점(1byte를 읽을 수 있는 함수)를 이용해 PIE base를 구하고, 이를 이용해 libc_base, one_gadget을 구함