basic_exploitation_003

곽무경·2022년 7월 10일

System Hacking Quiz

목록 보기
20/21

접속 환경


Partial RELRO, NX

분석 및 설계

get_shell 함수가 있다. → 주소는 0x8048669
sprintf에서 FSB가 발생한다. sprintf : 출력값을 문자열에 저장하는 함수
sptinf 에서 마찬가지로 BOF가 발생한다. → 이를 이용
malloc으로 할당받는 힙 주소 : 0x804b1a0
main 반환 주소 : 0xffffd0cc

  • 설계 1 : 반환 주소를 get_shell로 덮는다.
  • 설계 2 : printf의 got를 get_shell로 덮는다. (불가능)

1. 반환 주소의 위치

총 스택 사이즈가 0x98 이다. 0x98=152 이고, 아래에 SFP[0x4]와 반환주소[0x4]가 있으니
156바이트의 더미와 get_shell 함수의 주소로 payload를 구성한다.

2. payload 구성, 전송, 셸 획득

payload=b"%156c"+p32(get_shell)
p.send(payload)

0개의 댓글