!c99Shell v. 1.0 pre-release build #16!

Software: Apache/2.2.3 (CentOS). PHP/5.1.6 

uname -a: Linux mx-ll-110-164-51-230.static.3bb.co.th 2.6.18-194.el5PAE #1 SMP Fri Apr 2 15:37:44
EDT 2010 i686
 

uid=48(apache) gid=48(apache) groups=48(apache) 

Safe-mode: OFF (not secure)

/usr/libexec/webmin/mysql/   drwxr-xr-x
Free 53.79 GB of 127.8 GB (42.08%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     save_field.cgi (4.62 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/perl
# save_field.cgi
# Create, modify or delete a field

require './mysql-lib.pl';
&ReadParse();
&can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
$access{'edonly'} && &error($text{'dbase_ecannot'});
&error_setup($text{'field_err'});

# Build default clause
if ($in{'default_def'} == 0) {
    $default = "default NULL";
    }
elsif ($in{'default_def'} == 2) {
    $default = "default CURRENT_TIMESTAMP";
    }
elsif ($in{'default_def'} == 3) {
    $default = $in{'new'} ? "" : "default ''";
    }
else {
    $default = "default '$in{'default'}'";
    }

if ($in{'delete'}) {
    # delete this field
    &execute_sql_logged($in{'db'},
            "alter table ".&quotestr($in{'table'})." drop ".
            &quotestr($in{'old'}));
    &webmin_log("delete", "field", $in{'old'}, \%in);
    }
elsif ($in{'new'}) {
    # add a new field
    $in{'field'} =~ /^\S+$/ || &error(&text('field_efield', $in{'field'}));
    $in{'null'} && $in{'key'} && &error($text{'field_ekey'});
    $in{'size'} = $size = &validate_size();
    $sql = sprintf "alter table %s add %s %s%s %s %s %s",
        &quotestr($in{'table'}), &quotestr($in{'field'}), $in{'type'},
        $size, $in{'null'} ? '' : 'not null',
        $default,
        $in{'ext'};
    &execute_sql_logged($in{'db'}, $sql);
    &webmin_log("create", "field", $in{'field'}, \%in);
    }
else {
    # modify an existing field
    $in{'field'} =~ /^\S+$/ || &error(&text('field_efield', $in{'field'}));
    $in{'null'} && $in{'key'} && &error($text{'field_ekey'});
    $in{'size'} = $size = &validate_size();
    $sql = sprintf "alter table %s modify %s %s%s %s %s %s",
            &quotestr($in{'table'}), &quotestr($in{'old'}),
            $in{'type'}, $size, $in{'null'} ? 'null' : 'not null',
            $default,
            $in{'ext'};
    &execute_sql_logged($in{'db'}, $sql);
    if ($in{'old'} ne $in{'field'} ||
        $in{'type'} ne $in{'newtype'} ||
        $in{'oldopts'} ne $in{'opts'}) {
        # Rename or retype field as well
        if ($in{'type'} ne $in{'newtype'} ||
            $in{'oldopts'} ne $in{'opts'}) {
            # Type has changed .. fix size
            if ($in{'newtype'} eq 'enum' ||
                $in{'newtype'} eq 'set') {
                # Convert old size to enum values
                if ($in{'type'} ne 'enum' &&
                    $in{'type'} ne 'set') {
                    $size = $size =~ /^\((.*)\)/ ?
                        '('.join(",", map { "'$_'" }
                         split(/\n/, $1)).')' : "('')";
                    }
                }
            elsif ($in{'newtype'} eq 'float' ||
                   $in{'newtype'} eq 'double' ||
                   $in{'newtype'} eq 'decimal') {
                # Use old sizes or size and opts
                $size = $size =~ /^\((\d+),(\d+)\)/ ? $size :
                  $size =~ /^\((\d+)\)(.*)/ ? "($1,$1)$2" : "";
                }
            elsif ($in{'newtype'} eq 'date' ||
                   $in{'newtype'} eq 'datetime' ||
                   $in{'newtype'} eq 'time' ||
                   $in{'newtype'} =~ /(blob|text)$/) {
                # New type has no size or opts
                $size = "";
                }
            else {
                # Use old size and opts
                $size = $size =~ /^\((\d+)/ ?
                    "($1) $in{'opts'}" :
                    $in{'newtype'} =~ /char$/ ?
                        "(255) $in{'opts'}" : $in{'opts'};
                }
            }
        $sql = sprintf "alter table %s change %s %s %s%s %s",
                &quotestr($in{'table'}), &quotestr($in{'old'}),
                &quotestr($in{'field'}), $in{'newtype'}, $size,
                $in{'null'} ? '' : 'not null';
        &execute_sql_logged($in{'db'}, $sql);
        }
    &webmin_log("modify", "field", $in{'field'}, \%in);
    }

if ($in{'key'} != $in{'oldkey'}) {
    # Adding or removing a primary key to the table
    foreach $d (&table_structure($in{'db'}, $in{'table'})) {
        push(@pri, $d->{'field'}) if ($d->{'key'} eq 'PRI');
        }
    if ($in{'key'}) {
        @npri = ( @pri, $in{'field'} );
        }
    else {
        @npri = grep { $_ ne $in{'field'} } @pri;
        }
    &execute_sql_logged($in{'db'},
            "alter table ".&quotestr($in{'table'})." drop primary key")
        if (@pri);
    &execute_sql_logged($in{'db'},
            "alter table ".&quotestr($in{'table'})." add primary key (".
            join(",", map { &quotestr($_) } @npri).")") if (@npri);
    }
&redirect("edit_table.cgi?db=$in{'db'}&table=".&urlize($in{'table'}));

sub validate_size
{
if ($in{'type'} eq 'enum' || $in{'type'} eq 'set') {
    $in{'size'} || &error($text{'field_eenum'});
    $in{'size'} =~ s/\r//g;
    return '('.join(",", map { "'$_'" } split(/\n/, $in{'size'})).')';
    }
elsif ($in{'type'} eq 'float' || $in{'type'} eq 'double' ||
       $in{'type'} eq 'decimal') {
    $in{'size1'} =~ /^\d+$/ || &error(&text('field_esize', $in{'size1'}));
    $in{'size2'} =~ /^\d+$/ || &error(&text('field_esize', $in{'size2'}));
    return "($in{'size1'},$in{'size2'}) $in{'opts'}";
    }
elsif ($in{'type'} eq 'date' || $in{'type'} eq 'datetime' ||
       $in{'type'} eq 'time' || $in{'type'} eq 'timestamp' ||
       $in{'type'} =~ /(blob|text)$/) {
    return "";
    }
elsif ($in{'size_def'}) {
    return "";
    }
else {
    $in{'size'} =~ /^\d+$/ || &error(&text('field_esize', $in{'size'}));
    return "($in{'size'}) $in{'opts'}";
    }
}


:: Command execute ::

Enter:
 
Select:
 

:: Shadow's tricks :D ::

Useful Commands
 
Warning. Kernel may be alerted using higher levels
Kernel Info:

:: Preddy's tricks :D ::

Php Safe-Mode Bypass (Read Files)

File:

eg: /etc/passwd

Php Safe-Mode Bypass (List Directories):

Dir:

eg: /etc/

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c999shell v. 1.0 pre-release build #16 Modded by Shadow & Preddy | RootShell Security Group | r57 c99 shell | Generation time: 0.0219 ]--