본문 바로가기

시스템해킹

[드림핵] Return to Library 풀이

728x90

NX와 canary가 적용 되어있다.

 

 

문제파일

문제파일을 보면 buf[0x30]을 read함수로 0x100만큼 받기 때문에 bof를 일으킬 수 있다

16번째 줄에 system이 사용되었으므로 plt에 system이 있을 것이다.

첫번째 입력에서 canary값을 구하고 2번째 입력에서 rbp값 까지 침범한 뒤

/bin/sh 주소를 system으로 실행시키면 flag를 얻을 수 있을 것 같다.

 

 

풀이 과정

1. 문제파일 디버깅 후 main stack frame 작성

2. 리턴 가젯 주소 확인

3. /bin/sh 주소 확인

4. payload작성

5. 실행

 

 

1. 디버깅 후 stackframe 작성

 

 

main stack frame

 

 

 

2. 리턴 가젯 주소 확인

ROPgadget --binary ./rtl --re "pop rdi"

 

 

ROPgadget --binary ./rtl --re "ret"

 

의미없는 ret가젯을 찾은 이유는 16진수 기준 16의 배수로 가젯을 형성해야 하기 때문이다

 

 

 

3. /bin/sh 주소 확인

 

 

 

4. payload작성

 

첫 번째 입력에서 canary값을 구한 뒤 두번째 입력에서 rbp값 까지 침범 뒤

pop rdi 후 주소를 입력하고

system함수를 실행시키기 위해 system 주소를 입력한다.

이때 ret 가젯은 16의 배수를 맞추기 위한 것이다

 

 

5. 실행

 

 

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

[드림핵] basic_rop_x64 풀이  (2) 2024.05.10
[드림핵] rop 풀이  (0) 2024.05.07
[드림핵] ssp_001 풀이  (0) 2024.05.03
[드림핵] Return to Shellcode 풀이  (0) 2024.05.03
[드림핵] basic_exploitation_001 풀이  (0) 2024.03.29