passcode : new attacker
(NO DRAG, NO PASSCODE)
bash2. 소스코드를 바로 분석해보자.
코드에서 argv[1][47] == '\xbf' 이면 프로세스가 종료되므로 우리가 사용한 일반적인 BOF로는 풀리지 않을 것 같다. 이 문제는 RTL(Rrturn To Library) 기법을 사용하는 문제인 것 같다. 우선 RTL 기법에 대해서 알아보자.
RTL을 이해하였다면 이제 바로 문제를 풀어보자.
bugbear 프로그램의 메모리 구조와 새로 추가해줄 dummy + parameter 의 구조는 다음과 같다.
—————————— High Address
| parameter | → "/bin/sh" 문자열의 주소
——————————
| dummy(4) |
——————————
| ret(4) | → system 함수의 주소
——————————
| sfp(4) |
——————————
| buffer(40) |
—————————— Low Address
우선 RET 자리에 덮을 system 함수 주소와 parameter 자리에 넣을 "/bin/sh" 문자열의 주소를 구해보자.
system 함수 주소 → 0x40058ae0
"/bin/sh" 함수 주소 → 0x400fbff9
바로 payload를 구성하여 exploit 해보자.
[bugbear] : new divide
'Pwnable > LOB' 카테고리의 다른 글
[LOB] 14. GIANT (0) | 2020.08.28 |
---|---|
[LOB] 13. BUGBEAR (0) | 2020.08.28 |
[LOB] 11. GOLEM (0) | 2020.08.28 |
[LOB] 10. SKELETON (0) | 2020.08.28 |
[LOB] 9. VAMPIRE (0) | 2020.08.28 |