# code
read 함수에서 256 바이트를 src에 저장하는데,
strcpy 함수에서 이 256 바이트를 크기가 0x38 = 56 바이트인 dest 변수에 복사한다.
이때 overflow 취약점이 발생한다.
주소의 값을 알고싶은 주소를 입력하면 See_something 함수로 해당 주소의 값을 출력해준다.
주소가 ASLR로 계속 바뀌므로 이것을 이용해 libc 함수의 실행 시 주소를 받아 저장하고 system 함수와의 offset을 알면 system 함수 주소를 구할 수 있다.
# 보호기법 확인
NX가 걸려있어서 shellcode를 못 올리니 RTL을 사용한다.
# offset 구하기
Printf_system_offset : 0xe8d0
Printf_binsh_offset : 0x11239b
# dest에서 return address 거리 구하기
Dest가 [ebp-38h]에 위치하므로 SFP – 0x38이 dest의 시작일 것이다.
(사실 디버깅으로 안 구해져서...)
Dest + SFP = 60 바이트
따라서 dest(56) + SFP(4) + return address(4) 인 stack 구조를 갖는다.
# exploit
[TAMU 2019] pwn3 (0) | 2019.08.23 |
---|---|
[tuCTF] shella-easy (0) | 2019.08.23 |
r0pbaby 풀고 정리 (0) | 2019.08.16 |
[Defcon 2015] r0pbaby (0) | 2019.08.16 |
[PlaidCTF 2013] ropasaurusrex (0) | 2019.08.15 |