농소

The Lord Of The BOF (FC3) // iron_golem -> dark_eyes 본문

Wargame/The Lord Of The BOF (FC3)

The Lord Of The BOF (FC3) // iron_golem -> dark_eyes

농소 2018. 3. 5. 23:39

[ dark_eyes ]




fake ebp를 막고

힌트로 RET sleding을 이용하라고 나와있네요

ret sleding이란 에필로그에 ret주소를 넣고 반복적으로 사용하여 공격자가 원하는 위치로 eip를 변경할 수 있게 하는 기법입니다.



dummy 268 | dddd 를 넣어본 결과입니다. 보시면 랜덤스택이 적용이 되었는데도 메모리값이 바뀌질 않는곳이 있습니다.



다시한번 실행해서 본 결과 빨간색으로 네모친 부분의 값이 변경이 안됨을 알 수 있습니다.

이것을 execl의 첫번째 인자로 잡고서 공격을 진행해 보겠습니다.

execl( "/bin/my-pass", NULL );

으로 생각하고 만들어볼 생각입니다.



자 우선 해당위치가 첫번째 인자로 쓰기위해 ret sleding을 이용하여 위치를 바꾸어줍니다.

ret주소를 알아냅니다



그리고 첫번째 인자는 포인터형이므로 그 주소가 가르키는 값을 알아내줍시다.

0x0083ed3c네요

"\x3c\xed\x83"을 심볼릭링크나 편집기를 이용하여 해당값을 파일이름으로 해주시면 됩니다.



execl의 주소도 알아내줍시다.



자 이제 주소들을 다 구했으니 gdb로 payload를 채워보고 잘 들어갔는지 확인해 줍시다.

값이 잘 들어갔네요

payload

"$(python -c 'print "a" * 268 + "\xb9\x84\x04\x08" * 3 + "\x20\x58\x7a\x00"')"



저는 심볼릭 링크를 이용하여 파일을 만들어 주었습니다.



이제 이 payload를 가지고 exploit을 한 결과 다음레벨로 가는 패스워드를 획득하였습니다.