Pwnable/LOB

[LOB] 12. DARKKNIGHT

Lucvs 2020. 8. 28. 15:57

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