농소
The Lord Of The BOF (FC3) // iron_golem -> dark_eyes 본문
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을 한 결과 다음레벨로 가는 패스워드를 획득하였습니다.
'Wargame > The Lord Of The BOF (FC3)' 카테고리의 다른 글
The Lord Of The BOF (FC3) // evil_wizard -> dark_stone (0) | 2018.03.06 |
---|---|
The Lord Of The BOF (FC3) // hell_fire -> evil_wizard (0) | 2018.03.06 |
The Lord Of The BOF (FC3) // dark_eyes -> hell_fire (0) | 2018.03.06 |
The Lord Of The BOF (FC3) // gate -> iron_golem (0) | 2018.02.23 |