Partial RELRO,NX
get_shell함수가 있다. → 주소는0x8048669
sprintf에서 FSB가 발생한다.sprintf: 출력값을 문자열에 저장하는 함수
sptinf에서 마찬가지로 BOF가 발생한다. → 이를 이용
malloc으로 할당받는 힙 주소 :0x804b1a0
main반환 주소 :0xffffd0cc
- 설계 1 : 반환 주소를 get_shell로 덮는다.
- 설계 2 :
printf의 got를 get_shell로 덮는다. (불가능)
총 스택 사이즈가
0x98이다. 0x98=152 이고, 아래에 SFP[0x4]와 반환주소[0x4]가 있으니
156바이트의 더미와 get_shell 함수의 주소로 payload를 구성한다.
payload=b"%156c"+p32(get_shell) p.send(payload)