Notice
Recent Posts
Recent Comments
Link
농소
The Lord Of The BOF // giant -> assasin 본문
이어서 다음 문제를 진행해 보겠습니다.
전 단계에서는 RTL을 이용하여 문제를 풀었다면
이번에는 RTL을 막아놨네요
스택메모리 영역("\xbf")과 라이브러리 영역("\x40") 을 못 쓴다면 이제 남은건 data, text영역이 있네요
그러나 data은 사용할 수 없으니 text segment("\x08)를 이용하도록 합시다
c파일에서 확인했듯이 eip를 제외한 buf+ebp영역을 전부 0으로 초기화 되어있습니다.
환경변수를 충분히 변조하여 이용 가능하지만 stack메모리 영역도 이용할 수 없고.
이런경우 ret 슬레이딩 기법을 이용하면 해결 가능하겠네요
eip(=ret ) 에 main문의 에필로그 ret을 넣어준다면 pop eip, jmp eip가 실행되므로 스택포인터가 증가하게되어
결과적으로 eip가 4바이트 밀리게 됩니다. 즉 eip위치가 변조되는 것인데요
이를 이용하여 쉘코드의 주소를 삽입해 준다면 쉘이 떨어질 것입니다.
우선 환경변수에 쉘을 넣도록 합시다
우선 쉘을 넣어주고
eip에 ret주소를 넣으면 결과적으로 dddd 위치가 eip로 바뀌게 됩니다
이제 이 위치에 쉘코드를 넣어주면 되겠네요
nop코드중 하나의 영역을 사용하겠습니다.
dddd에 nop영역중 하나를 넣어 실제로 실행했더니 쉘이 잘 떨어졌습니다.
'Wargame > The Lord Of The BOF' 카테고리의 다른 글
The Lord Of The BOF // zombie_assassin -> succubus (0) | 2018.02.21 |
---|---|
The Lord Of The BOF // assasin -> zombie_assassin (0) | 2018.02.21 |
The Lord Of The BOF // bugbear -> giant (0) | 2018.02.21 |
The Lord Of The BOF // darkknight -> bugbear (omega,RTL) (0) | 2018.02.19 |
The Lord Of The BOF // golem -> darkknight (fake ebp) (0) | 2018.02.13 |