먼저 level10소유의 파일을 먼저 찾는다
디버깅을 하려했지만 권한이 없다 어차피 소스코드가 있으니 컴파일하고 디버깅한다
이번 문제는 다른 내용들은 크게 중요하지 않다
먼저 스택 프레임, 즉, 프로그램이 로딩될 때 얼마의 용량을 차지하는지에 대한 부분을 볼것이다
0x28, 40바이트가 할당된다 소스코드를 보면
char buf2[10];
char buf[10]; 이렇게 총 20바이트가 할당된다 더미가 들어간다는 것이다 그럼 더미가 어디에, 얼마나 들어가는지 알아보자
저 부분을 보면 ebp-40에 fget함수를 사용하고 0x10을 정리한다 즉 ebp-40부터 10만큼을 사용하는 것이다
그리고 ebp-24를 strcmp에 사용하면서 0x10을 정리한다 ebp-24부터 10만큼 사용하는 것이다
소스코드를 보면
fgets(buf,40,stdin);
if ( strncmp(buf2, "go", 2) == 0 )
이다 즉 ebp-40부터 10만큼 사용하는곳은 buf가 되고 ebp-24부터 10만큼사용하는 것은 buf2가 된다 스택을 그려보면
이렇게 되지 않을까 생각한다
답을 넣어보자
펄로 ax16, go를 넣어보려 했는데 good skill!!이라고만뜨고 setreuid가 실행되질않는다
어쨌든 level9를 클리어했다
Phantom@TeamH4C