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 |