GOT Overwrite

2022. 1. 22. 18:10·System Hacking
목차
  1. GOT overwrite란
  2. GOT overwrite 실습
반응형

GOT overwrite란

dynamic link방식으로 컴파일된 바이너리가 공유 라이브러리를 호출할때 사용되는 PLT&GOT 중 GOT 값을 변조하여 내가 의도한 함수를 호출 하도록 하는 기법이다.

 

GOT와 PLT 개념에서 PLT는 GOT를 참조하고, GOT에는 실제 주소가 들어있다.

여기 GOT에 값을 원하는 함수의 실제 주소로 변조시키면, PLT는 변조한 함수가 호출된다.

이러한 기법이 GOT Overwrite이다.

 

GOT overwrite 실습

간단한 실습 코드를 작성해 본다.

컴파일 해보면 (gcc -m32 -no-pie -fno-pic -o got got.c)

다음과 같이 gets로 받은 문자열을 그대로 출력해준다.

 

여기서 GOT Overwrite를 공격하기 위해서 어떻게 해야하는지 천천히 살펴보자.

main + 50에서 puts@plt가 호출된다.

첫번째 명령으로 0x804a014로 jmp하는걸 볼 수 있는데

여기서 0x804a014가 GOT주소인 것을 알 수 있다.

이때 공격을 하기 위하여 got의 값을 system의 값으로 덮어주면된다.

이게 GOT Overwrite이다.

 

입력을 받는 gets함수에 /bin/sh을 입력해주고

다음 puts가 실행되는데 puts함수의 got를 system함수의 주소로 덮어씌워줬으니

결국에는 system함수가 실행되면서

puts("/bin/sh")가 되어야 할것이 system("/bin/sh")가 되면서 쉘이 따지는것을 확인할수있다.

반응형

'System Hacking' 카테고리의 다른 글

UAF (Use After Free)  (0) 2022.03.12
Return to Libc (RTL)  (0) 2022.02.18
PLT & GOT 파헤치기  (0) 2022.01.20
  1. GOT overwrite란
  2. GOT overwrite 실습
'System Hacking' 카테고리의 다른 글
  • UAF (Use After Free)
  • Return to Libc (RTL)
  • PLT & GOT 파헤치기
Penguin Dev
Penguin Dev
What does the Penguin say?
    글쓰기 관리
  • Penguin Dev
    Pengha!
    Penguin Dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (152)
      • Java & Spring (5)
      • System Hacking (4)
      • Algorithm (8)
        • Sorting algorithm (3)
      • Python (6)
      • Web (2)
        • Web Hacking & Security (2)
      • Write-Up (108)
        • pwnable.kr (17)
        • HackCTF (16)
        • 해커스쿨 FTZ (21)
        • LOB(lord of bufferoverflow) (19)
        • LOS (lord of sql injection) (28)
        • XSS-game (6)
        • Webhacking.kr (1)
      • SUA (19)
        • 오픈소스 보안 (19)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    computeifabsent
    ConcurrentHashMap
    putval()
    코드트리
    동시성처리
    spring boot
    concurrenthashmap vs hashmap
    DB정리
    CountDownLatch
    동시성
    Java
    computeifabsent()
    tabat
    computeifpresent()
    sqlinjection
    computeifpresent
    spring
    nop sled
    Lock
    thread-safe
    SpringBoot
    ReentrantLock
    enumerate #list comprehension
    lord of bufferoverflow
    hashmap vs concurrenthashmap
    코드트리조별과제
    AQS
    reentrantlock실습
    쿠폰발급
    LOB
  • 최근 댓글

  • 반응형
  • hELLO· Designed By정상우.v4.10.3
Penguin Dev
GOT Overwrite
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.