Re: Administrivia: List Announcement

From: Benjamin A. Okopnik (ben_at_callahans.org)
Date: 05/14/03

  • Next message: andrewg_at_d2.net.au: "RE: Administrivia: List Announcement"
    Date: Tue, 13 May 2003 23:25:18 -0400
    To: vuln-dev@securityfocus.com
    
    

    On Tue, May 13, 2003 at 01:36:24PM -0400, David Riley wrote:
    > On Tuesday, May 13, 2003, at 12:25 PM, Dave McKinney wrote:
    >
    > >We'll kick this off with the first challenge, which was devised by
    > >Aaron
    > >Adams:
    > >
    > >// vulndev-1.c

    [ snip ]

    > I'll start by saying that I like this idea... it'll give me a chance to
    > brush up on my skills in this area.
    >
    > Now, the only error I see in this program is that the for() loop checks
    > for i <= SIZE rather than i < SIZE. However, this doesn't seem to
    > affect much... when I run the compiled program on my OS X machine with
    > these args:
    >
    > ./vuln `perl -e 'print "a" x 2000'` `perl -e 'print "b" x 2000'`
    >
    > It exits cleanly. I imagine that it might overwrite a byte somewhere,
    > but it's not really doing much for me.

    It "works" for me on a Debian Linux box:

    ben@Fenrir:/tmp$ ./vulndev-1 `perl -we'print "A" x 253'` a
    Segmentation fault

    Note that it does _not_ crash in the reverse case (large argv[2]),
    although I'm not sure why. However, this might be indicative (pardon my
    rusty-as-can-be C skills):

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

    #define SIZE 252

    int
    main(int argc, char *argv[])
    {
            int i, l1, l2, s1, s2;
            char *p1, *p2;
            char *buf1 = malloc(SIZE);
            char *buf2 = malloc(SIZE);

            if (argc != 3)
                    exit(1);

            p1 = argv[1], p2 = argv[2];
            strncpy(buf2, p2, SIZE);
            for (i = 0; i <= SIZE && p1[i] != '\0'; i++)
                    buf1[i] = p1[i];

            l1 = strlen(p1);
            s1 = sizeof(p1);
            l2 = strlen(p2);
            s2 = sizeof(p2);

            free(buf1);
            free(buf2);

            printf("strlen1: %i sizeof1: %i\n", l1, s1);
            printf("strlen2: %i sizeof2: %i\n", l2, s2);
            
            return 0;
    }

    ------------------------------------------------------------------------

    Now, note the output of this:

    ben@Fenrir:/tmp/vuln-dev$ ./tst `perl -we'print "A" x 252'` a
    strlen1: 252 sizeof1: 4
    strlen2: 1 sizeof2: 4
    ben@Fenrir:/tmp/vuln-dev$ ./tst `perl -we'print "A" x 253'` a
    Segmentation fault
    ben@Fenrir:/tmp/vuln-dev$ ./tst a `perl -we'print "A" x 253'`
    strlen1: 1 sizeof1: 4
    strlen2: 253 sizeof2: 4
    ben@Fenrir:/tmp/vuln-dev$ ./tst a `perl -we'print "A" x 300'`
    strlen1: 1 sizeof1: 4
    strlen2: 300 sizeof2: 4
    ben@Fenrir:/tmp/vuln-dev$ ./tst a `perl -we'print "A" x 1000'`
    strlen1: 1 sizeof1: 4
    strlen2: 1000 sizeof2: 4

    Seems like "argv[2]" is copied no matter what the "strncpy"'s SIZE is.
    Hmm. Anybody have an idea?

    Ben Okopnik
    -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    The reason the government thinks you're just a number
      is because it's just a machine.


  • Next message: andrewg_at_d2.net.au: "RE: Administrivia: List Announcement"

    Relevant Pages

    • Re: Administrivia: List Announcement
      ... it'll give me a chance to ... brush up on my skills in this area. ...
      (Vuln-Dev)
    • Re: Ultralight winter camping?
      ... approach from the start than a quinzee which might take 2 people 1+ ... I suppose the skills are very good to have and that there are some ... But there's not a mountain w/in 500 miles of me, ... Maybe using a tarp in combination with landforms (brush, hollers, ...
      (rec.skiing.nordic)
    • Re: Boot with ZFS on single disk: "ZFS: i/o error - all block copies unavailable" [was: Re: GPT
      ... like to help in debugging it (however my skills in low-level C aren't ... Segmentation fault: 11 ...
      (freebsd-current)
    • Re: Integrity test
      ... > Our integrity test is a training version for job-applicants to ... > brush up their skills before being subjected to the 'real thing'. ...
      (alt.marketing.online.ebay)
    • Re: ITSOL
      ... about polyamory and cats? ... Some of us don't have jobs, ... You could brush up your skills by explaining to me where my system ...
      (uk.misc)