[해커스쿨 ftz] level 11 -> level 12

2014.08.22 07:14

hint

#include <stdio.h>

#include <stdlib.h>


int main (int argc, char *argv[])

{

char str[256];


setreuid(3092, 3092);

strcpy(str, argv[1]);

printf(str);

}



풀이

1. 내 실력으로는 fsb, nop, rtl, eggshell 등의 방법이 떠오르는데, eggshell로 풀이한다.

1-1 스택 구조 확인


16진수로 108, 10진수로 264의 공간을 할당하고 있다.

실제 str변수의 크기는 256이므로 나머지 8은 dummy임을 알 수 있다.

따라서, 264의 공간에 sfp(4바이트)를 합하여 268바이트를 쓰레기 값으로 채우고 그 다음에 eggshell 주소를 작성해주면 된다.




1-2 eggshell 실행 (환경변수 EGG)

1-3 getegg 실행 (실제 EGG의 주소 출력)





2. 공격 명령어 작성


smleenull WARGAME/hackerschool ftz,lob

티스토리 툴바