Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

having fun executing shellcodes :)

Name: Anonymous 2012-03-21 11:43


#include <stdio.h>

unsigned char a[] = {
  0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00,
  0x30, 0x83, 0x04, 0x08, 0x34, 0x00, 0x00, 0x00, 0x28, 0x11, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x20, 0x00, 0x08, 0x00, 0x28, 0x00,
  0x1e, 0x00, 0x1b, 0x00, 0x06, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,
  0x34, 0x80, 0x04, 0x08, 0x34, 0x80, 0x04, 0x08, 0x00, 0x01, 0x00, 0x00,
  0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
  0x03, 0x00, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x34, 0x81, 0x04, 0x08,
  0x34, 0x81, 0x04, 0x08, 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
  0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0x08, 0x00, 0x80, 0x04, 0x08,
  0xd4, 0x04, 0x00, 0x00, 0xd4, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
  0x00, 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x00, 0x00,
  0x0c, 0x9f, 0x04, 0x08, 0x0c, 0x9f, 0x04, 0x08, 0x08, 0x01, 0x00, 0x00,
  0x10, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
  0x02, 0x00, 0x00, 0x00, 0x20, 0x0f, 0x00, 0x00, 0x20, 0x9f, 0x04, 0x08,
  0x20, 0x9f, 0x04, 0x08, 0xd0, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00,
  0x06, 0x00,
  0x83, 0xec, 0x04, 0xa1, 0x0c, 0x9f, 0x04, 0x08, 0x83, 0xf8, 0xff, 0x74,
  0x13, 0xbb, 0x0c, 0x9f, 0x04, 0x08, 0x66, 0x90, 0x83, 0xeb, 0x04, 0xff,
  0xd0, 0x8b, 0x03, 0x83, 0xf8, 0xff, 0x75, 0xf4, 0x83, 0xc4, 0x04, 0x5b,
  0x5d, 0xc3, 0x90, 0x90, 0x55, 0x89, 0xe5, 0x53, 0x83, 0xec, 0x04, 0xe8,
  0x00, 0x00, 0x00, 0x00, 0x5b, 0x81, 0xc3, 0x4c, 0x1b, 0x00, 0x00, 0xe8,
  0xac, 0xfe, 0xff, 0xff, 0x59, 0x5b, 0xc9, 0xc3, 0x03, 0x00, 0x00, 0x00,
  0x01, 0x00, 0x02, 0x00, 0x77, 0x61, 0x73, 0x6e, 0x74, 0x20, 0x74, 0x68,
  0x61, 0x74, 0x20, 0x66, 0x75, 0x6e, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00
};

void main(){
    int (*func)();
      func = (int (*)()) a;
      (int)(*func)();
}

Name: Anonymous 2012-03-21 17:38

>>79
I hope you're trolling mate.

#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>

unsigned char a[] = {
  0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00,
  0x30, 0x83, 0x04, 0x08, 0x34, 0x00, 0x00, 0x00, 0x28, 0x11, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x20, 0x00, 0x08, 0x00, 0x28, 0x00,
  0x1e, 0x00, 0x1b, 0x00, 0x06, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,
  0x34, 0x80, 0x04, 0x08, 0x34, 0x80, 0x04, 0x08, 0x00, 0x01, 0x00, 0x00,
  0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
  0x03, 0x00, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x34, 0x81, 0x04, 0x08,
  0x34, 0x81, 0x04, 0x08, 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
  0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0x08, 0x00, 0x80, 0x04, 0x08,
  0xd4, 0x04, 0x00, 0x00, 0xd4, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
  0x00, 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x00, 0x00,
  0x0c, 0x9f, 0x04, 0x08, 0x0c, 0x9f, 0x04, 0x08, 0x08, 0x01, 0x00, 0x00,
  0x10, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
  0x02, 0x00, 0x00, 0x00, 0x20, 0x0f, 0x00, 0x00, 0x20, 0x9f, 0x04, 0x08,
  0x20, 0x9f, 0x04, 0x08, 0xd0, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00,
  0x06, 0x00,
  0x83, 0xec, 0x04, 0xa1, 0x0c, 0x9f, 0x04, 0x08, 0x83, 0xf8, 0xff, 0x74,
  0x13, 0xbb, 0x0c, 0x9f, 0x04, 0x08, 0x66, 0x90, 0x83, 0xeb, 0x04, 0xff,
  0xd0, 0x8b, 0x03, 0x83, 0xf8, 0xff, 0x75, 0xf4, 0x83, 0xc4, 0x04, 0x5b,
  0x5d, 0xc3, 0x90, 0x90, 0x55, 0x89, 0xe5, 0x53, 0x83, 0xec, 0x04, 0xe8,
  0x00, 0x00, 0x00, 0x00, 0x5b, 0x81, 0xc3, 0x4c, 0x1b, 0x00, 0x00, 0xe8,
  0xac, 0xfe, 0xff, 0xff, 0x59, 0x5b, 0xc9, 0xc3, 0x03, 0x00, 0x00, 0x00,
  0x01, 0x00, 0x02, 0x00, 0x77, 0x61, 0x73, 0x6e, 0x74, 0x20, 0x74, 0x68,
  0x61, 0x74, 0x20, 0x66, 0x75, 0x6e, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00
};

unsigned short main(){
        if (mprotect(a, sizeof(a), PROT_READ | PROT_WRITE | PROT_EXEC) != 0)
                exit(1);
    int (*func)();
      func = (int (*)()) a;
      (int)(*func)();
      return 'c'; /* u mad? */
}

Prevented segfault.

Name: Anonymous 2012-03-21 17:40

>>81
OMG it just returned -1

Name: Anonymous 2012-03-21 17:44

>>1,3,8,14,16,20,22,25,27,30-32,35,40,42-44,48-49,52,54,56-57,61,63-67,70,74,76,80
You can stop samefagging, your program is stupid and you can take it back to /g/.

Name: Anonymous 2012-03-21 17:45

>>81
This isn't valid C, sys/mman.h is part of POSIX.

Name: Anonymous 2012-03-21 17:47

>>84
C allows for including other libraries.

Name: Anonymous 2012-03-21 17:49

>>85
Not if those libraries are platform dependent, then your code stops being C and starts being POSIX C.

You're dependent on compiling and executing this on a POSIX platform, which for instance won't work on Windows.

Name: Anonymous 2012-03-21 17:50

>>86
It will. Again, you must not be complete faggot.

Name: Anonymous 2012-03-21 17:52

>>87
No it won't sys/mman.h doesn't even exist on Windows, it's a POSIX header, not part of the C standard library.

Name: Anonymous 2012-03-21 17:53

Why don't you just specify which platform you are on, which architecture you're using, which version of GCC and which flags you are using? If you do all that then the behavior will probably have an actual meaning.

Name: Anonymous 2012-03-21 17:58

>>88
You see? You're complete faggot. It'll not work for you on Windows because you're complete faggot... Or great troll.

#include <unistd.h>
#include <signal.h>
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/mman.h>

unsigned char a[] = {
        0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00,
        0x30, 0x83, 0x04, 0x08, 0x34, 0x00, 0x00, 0x00, 0x28, 0x11, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x20, 0x00, 0x08, 0x00, 0x28, 0x00,
        0x1e, 0x00, 0x1b, 0x00, 0x06, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,
        0x34, 0x80, 0x04, 0x08, 0x34, 0x80, 0x04, 0x08, 0x00, 0x01, 0x00, 0x00,
        0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
        0x03, 0x00, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x34, 0x81, 0x04, 0x08,
        0x34, 0x81, 0x04, 0x08, 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
        0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0x08, 0x00, 0x80, 0x04, 0x08,
        0xd4, 0x04, 0x00, 0x00, 0xd4, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
        0x00, 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x00, 0x00,
        0x0c, 0x9f, 0x04, 0x08, 0x0c, 0x9f, 0x04, 0x08, 0x08, 0x01, 0x00, 0x00,
        0x10, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
        0x02, 0x00, 0x00, 0x00, 0x20, 0x0f, 0x00, 0x00, 0x20, 0x9f, 0x04, 0x08,
        0x20, 0x9f, 0x04, 0x08, 0xd0, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00,
        0x06, 0x00,
        0x83, 0xec, 0x04, 0xa1, 0x0c, 0x9f, 0x04, 0x08, 0x83, 0xf8, 0xff, 0x74,
        0x13, 0xbb, 0x0c, 0x9f, 0x04, 0x08, 0x66, 0x90, 0x83, 0xeb, 0x04, 0xff,
        0xd0, 0x8b, 0x03, 0x83, 0xf8, 0xff, 0x75, 0xf4, 0x83, 0xc4, 0x04, 0x5b,
        0x5d, 0xc3, 0x90, 0x90, 0x55, 0x89, 0xe5, 0x53, 0x83, 0xec, 0x04, 0xe8,
        0x00, 0x00, 0x00, 0x00, 0x5b, 0x81, 0xc3, 0x4c, 0x1b, 0x00, 0x00, 0xe8,
        0xac, 0xfe, 0xff, 0xff, 0x59, 0x5b, 0xc9, 0xc3, 0x03, 0x00, 0x00, 0x00,
        0x01, 0x00, 0x02, 0x00, 0x77, 0x61, 0x73, 0x6e, 0x74, 0x20, 0x74, 0x68,
        0x61, 0x74, 0x20, 0x66, 0x75, 0x6e, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00
};

unsigned short main(){
        int pagesize;
        size_t len;

        pagesize = sysconf(_SC_PAGE_SIZE);
        if (pagesize == -1) {
                perror("pagesize");
                exit(1);
        }

        void * p = (unsigned char *) (((char)a % pagesize) * pagesize);

        if (mprotect(p, pagesize, PROT_READ | PROT_WRITE | PROT_EXEC) != 0) {
                perror("mprotect");
                exit(1);
        }
        int (*func)();
        func = (int (*)()) a;
        (int)(*func)();
        return 'c'; /* u mad? */
}


prints "mprotect: Cannot allocate memory"

Name: Anonymous 2012-03-21 17:59

>>90
Doesn't work on Windows, Windows isn't POSIX.

Name: Anonymous 2012-03-21 18:02

Guess what you stupid sack of shit I just did a grep of the entire ISO/IEC 9899:2011 standard for mprotect, no results. Same with unistd and sysconf, guess what? No results.

None of those are part of C.

Go read the fucking standard, it's part of POSIX so it won't work on non-POSIX platforms.

You can just keep on bringing in more platform dependent behavior, it will just make you look even more retarded than you already do.

Name: Anonymous 2012-03-21 18:02

Wait so this guy doesn't even know what the standard library is and what POSIX is?

Name: Anonymous 2012-03-21 18:03

Name: Anonymous 2012-03-21 18:04

>>92
is it really that hard to try and be polite?
you pretty much destroy any chance to be taken srsly

Name: Anonymous 2012-03-21 18:05

>>95
you pretty much destroy any chance to be taken srsly
By posting stupid shit like that you aren't taken seriously.

Just read the fucking standard you stupid piece of shit. Is it really that hard, or can't you afford it or something?

Name: Anonymous 2012-03-21 18:06

>>96
same here, whats bugging you mate?
whatever it is i'm pretty sure its not your fault

Name: Anonymous 2012-03-21 18:07

>>97
What's annoying me is that you keep displaying glaring ignorance when it comes to C, you have shown that you have no fucking clue what C means.

Read the standard, it will help you realize how fucking dumb you look right now.

Name: Anonymous 2012-03-21 18:07

This guy is like the reverse Kodak, he's just as persistent and moronic but hasn't actually read the standard.

Name: Anonymous 2012-03-21 18:08

>>96
here http://www.youtube.com/watch?v=GtkST5-ZFHw
just stop being angry at the world its not your fault

Name: Anonymous 2012-03-21 18:09

>>100
I'm not angry at all, I'm just laughing at you because you're so fucking dumb.

Name: Anonymous 2012-03-21 18:10

>>100
well its not your fault

Name: Anonymous 2012-03-21 18:11

>>101
its not your fault!

Name: Anonymous 2012-03-21 18:11

This is shitty platform, compiler, endian, word size, architecture dependent code.

Name: Anonymous 2012-03-21 18:11

>>103
I know it's not my fault, I blame your parents shitty genetic material and most likely shitty upbringing.

Name: Anonymous 2012-03-21 18:12

#include <unistd.h>
#include <signal.h>
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/mman.h>

unsigned char a[] = {
        0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00,
        0x30, 0x83, 0x04, 0x08, 0x34, 0x00, 0x00, 0x00, 0x28, 0x11, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x20, 0x00, 0x08, 0x00, 0x28, 0x00,
        0x1e, 0x00, 0x1b, 0x00, 0x06, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,
        0x34, 0x80, 0x04, 0x08, 0x34, 0x80, 0x04, 0x08, 0x00, 0x01, 0x00, 0x00,
        0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
        0x03, 0x00, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x34, 0x81, 0x04, 0x08,
        0x34, 0x81, 0x04, 0x08, 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
        0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0x08, 0x00, 0x80, 0x04, 0x08,
        0xd4, 0x04, 0x00, 0x00, 0xd4, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
        0x00, 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x00, 0x00,
        0x0c, 0x9f, 0x04, 0x08, 0x0c, 0x9f, 0x04, 0x08, 0x08, 0x01, 0x00, 0x00,
        0x10, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
        0x02, 0x00, 0x00, 0x00, 0x20, 0x0f, 0x00, 0x00, 0x20, 0x9f, 0x04, 0x08,
        0x20, 0x9f, 0x04, 0x08, 0xd0, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00,
        0x06, 0x00,
        0x83, 0xec, 0x04, 0xa1, 0x0c, 0x9f, 0x04, 0x08, 0x83, 0xf8, 0xff, 0x74,
        0x13, 0xbb, 0x0c, 0x9f, 0x04, 0x08, 0x66, 0x90, 0x83, 0xeb, 0x04, 0xff,
        0xd0, 0x8b, 0x03, 0x83, 0xf8, 0xff, 0x75, 0xf4, 0x83, 0xc4, 0x04, 0x5b,
        0x5d, 0xc3, 0x90, 0x90, 0x55, 0x89, 0xe5, 0x53, 0x83, 0xec, 0x04, 0xe8,
        0x00, 0x00, 0x00, 0x00, 0x5b, 0x81, 0xc3, 0x4c, 0x1b, 0x00, 0x00, 0xe8,
        0xac, 0xfe, 0xff, 0xff, 0x59, 0x5b, 0xc9, 0xc3, 0x03, 0x00, 0x00, 0x00,
        0x01, 0x00, 0x02, 0x00, 0x77, 0x61, 0x73, 0x6e, 0x74, 0x20, 0x74, 0x68,
        0x61, 0x74, 0x20, 0x66, 0x75, 0x6e, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00
};

unsigned short main(){
        int pagesize;
        size_t len;
        void * p;

        pagesize = sysconf(_SC_PAGE_SIZE);
        if (pagesize == -1) {
                perror("pagesize");
                exit(1);
        }

        p = (void *) (( (unsigned long) a / pagesize) * pagesize);

        if (mprotect(p, pagesize, PROT_READ | PROT_WRITE | PROT_EXEC) != 0) {
                perror("mprotect");
                exit(1);
        }

        int (*func)();
        func = (int (*)()) a;
        (int)(*func)();
        return 'c'; /* u mad? */
}


mprotect passed, but it still segfaults line 59

Name: Anonymous 2012-03-21 18:13

>>105
its not your fault
i wont you to repeat after me ITS NOT MY FAULT!
let go!!! you can do it!!!

Name: Anonymous 2012-03-21 18:13

>>106
Doesn't compile for me.

Name: Anonymous 2012-03-21 18:14

>>107
I already said that it's not my fault, are you mentally challenged or something?

Name: Anonymous 2012-03-21 18:15

>>109
come one you can do it, you can shed a tear if you like
cause its NOT your FAULT!

Name: Anonymous 2012-03-21 18:16

CONFORMING TO
       POSIX.1-2001.

Name: Anonymous 2012-03-21 18:17

This guy must have escaped his special education tutor.

Name: Anonymous 2012-03-21 18:17

Disregard >>1-110
They suck cocks.

Name: Anonymous 2012-03-21 18:17

>>100
ah fuck you! i can pretty much see the face of Will in the face
of every shitposter

Name: Anonymous 2012-03-21 18:19

Protip: the guy who doesn't capitalize the start of sentences or his I's has been samefagging this whole thread

Name: Anonymous 2012-03-21 18:23

Name: Anonymous 2012-03-21 18:32

=> 0x0000000000600ae0 <+0>:     jg     0x600b27 <a+71>
   0x0000000000600ae2 <+2>:     rex.WR
   0x0000000000600ae3 <+3>:     rex.RX add DWORD PTR [rcx],r8d
   0x0000000000600ae6 <+6>:     add    DWORD PTR [rax],eax
   0x0000000000600ae8 <+8>:     add    BYTE PTR [rax],al
   0x0000000000600aea <+10>:    add    BYTE PTR [rax],al
   0x0000000000600aec <+12>:    add    BYTE PTR [rax],al
   0x0000000000600aee <+14>:    add    BYTE PTR [rax],al
   0x0000000000600af0 <+16>:    add    al,BYTE PTR [rax]
   0x0000000000600af2 <+18>:    add    eax,DWORD PTR [rax]
   0x0000000000600af4 <+20>:    add    DWORD PTR [rax],eax
   0x0000000000600af6 <+22>:    add    BYTE PTR [rax],al
   0x0000000000600af8 <+24>:    xor    BYTE PTR [rbx+0x340804],al
   0x0000000000600afe <+30>:    add    BYTE PTR [rax],al
   0x0000000000600b00 <+32>:    sub    BYTE PTR [rcx],dl
   0x0000000000600b02 <+34>:    add    BYTE PTR [rax],al
   0x0000000000600b04 <+36>:    add    BYTE PTR [rax],al
   0x0000000000600b06 <+38>:    add    BYTE PTR [rax],al
   0x0000000000600b08 <+40>:    xor    al,0x0
   0x0000000000600b0a <+42>:    and    BYTE PTR [rax],al
   0x0000000000600b0c <+44>:    or     BYTE PTR [rax],al
   0x0000000000600b0e <+46>:    sub    BYTE PTR [rax],al
   0x0000000000600b10 <+48>:    (bad)


Where am I?

Name: Anonymous 2012-03-21 18:33

So would this work on SPARC? Is assembly somehow magically portable all of a sudden?

Name: Anonymous 2012-03-21 18:35

>>118
Yes

Name: Anonymous 2012-03-21 18:35

>>118 of course it is :-)

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List