ilch Forum » Allgemein » Plauder Ecke » Was is das?

Geschlossen
  1. #1
    User Pic
    Panicsheep Hall Of Fame
    Registriert seit
    24.08.2004
    Beiträge
    10.192
    Beitragswertungen
    16 Beitragspunkte
    Kann jemand von denen die PHP können mit folgendem Code was anfangen?

    <?
    header('Content-Type: application/octet-stream');
    
    error_reporting(125);
    $data = 'OK:';
    
    function err( $error )
    {
      die("err: $error");
    }
    
    function myerr()
    {
      $e = mysql_error();
      mysql_free_result( mysql_query( 'ROLLBACK' ) );
      err( $e );
    }
    
    function pgerr( $err )
    {
      $e = pg_last_error();
      if( $e == '' ) $e = $err;
      if( $e == '' ) $e = 'unknown pgsql error';
      pg_free_result( pg_query( 'ROLLBACK' ) );
      err( $e );
    }
    
    
    function dump( $val )
    {
      global $data;
      $len = strlen($val);
      if( $len < 255 )
        $data .= chr($len);
      else
        $data .= "\xFF".pack('V',$len);
      $data .= $val;
      if( strlen($data) > 100000 ) {
        echo $data;
        $data = '';    
      }
    
    }
    
    
    array_key_exists('server',$_POST) and array_key_exists('host',$_POST) and array_key_exists('port',$_POST) and array_key_exists('user',$_POST) and array_key_exists('password',$_POST) and array_key_exists('dbname',$_POST) or err("mailformed request");
    
    if( get_magic_quotes_gpc() ) 
      foreach( $_POST as $key => $value ) 
        $_POST[$key] = stripslashes($value);
    
    
    $commit = array_key_exists('commit',$_POST);
    
    if( $_POST['server'] == 'mysql' ) {
    
      $host = $_POST['host'];
      if( $_POST['port'] )
        $host .= ':'.$_POST['port'];
      $conn = mysql_connect($host,$_POST['user'],$_POST['password']) or myerr();
      if( $_POST['dbname'] != '' )
        mysql_select_db( $_POST['dbname'] ) or myerr();
      if( array_key_exists('charset',$_POST) && $_POST['charset'] != '' )
        mysql_query( 'SET NAMES \'' . $_POST['charset'] . '\'' ) or myerr();
      $result = FALSE;
      mysql_free_result( mysql_query( 'BEGIN' ) );
      for( $rn = 1; $rn < 1000; ++$rn ) {
        if( !array_key_exists( 'r'.$rn, $_POST ) )
          break;
        $data = 'OK:';
        $req = $_POST['r'.$rn];
        if( $req == 'connect' ) {
          dump( mysql_get_server_info() );
          dump( mysql_get_client_info() );
          dump( mysql_get_proto_info() );
          dump( mysql_get_host_info() );
        } else {
          $result = mysql_query($req) or myerr();
          if( $result === TRUE ) {
            dump( 0 );
            dump( mysql_affected_rows() );
          } else {
            $width = mysql_num_fields($result);
            $height = mysql_num_rows($result);
            dump($width);
            dump($height);
            for( $i = 0; $i < $width; ++$i ) {
              dump( mysql_field_name( $result, $i ) );
              $type = mysql_field_type( $result, $i );
              $len = mysql_field_len( $result, $i );
              $meta = mysql_fetch_field( $result, $i );
              $sflags = explode( ' ', mysql_field_flags ( $result, $i ) );
              $fl = 0;
              if( $meta->not_null ) $fl += 1;
              if( $meta->primary_key ) $fl += 2;
              if( $meta->unique_key ) $fl += 4;
              if( $meta->multiple_key ) $fl += 8;
              if( $meta->blob ) $fl += 16;
              if( $meta->unsigned ) $fl += 32;
              if( $meta->zerofill ) $fl += 64;
              if( in_array( 'binary', $sflags ) ) $fl += 128;
              if( in_array( 'enum', $sflags ) ) $fl += 256;
              if( in_array( 'auto_increment', $sflags ) ) $fl += 512;
              if( in_array( 'timestamp', $sflags ) ) $fl += 1024;
              if( in_array( 'set', $sflags ) ) $fl += 2048;
              if( $type == 'int' ) {
                if( $len > 11 ) $type = 8;                    # LONGLONG
                elseif( $len > 9 ) $type = 3;                 # LONG
                elseif( $len > 6 ) $type = 9;                 # INT24
                elseif( $len > 4 ) $type = 2;                 # SHORT
                else $type = 1;                               # TINY
              } elseif( $type == 'real' ) {
                if( $len == 12 ) $type = 4;                   # FLOAT     
                elseif( $len == 22 ) $type = 5;               # DOUBLE
                else $type = 0;                               # DECIMAL
              } elseif( $type == 'null' ) $type = 6;          # NULL
              elseif( $type == 'timestamp' ) $type = 7;       # TIMESTAMP
              elseif( $type == 'date' ) $type = 10;           # DATE
              elseif( $type == 'time' ) $type = 11;           # TIME
              elseif( $type == 'datetime' ) $type = 12;       # DATETIME
              elseif( $type == 'year' ) $type = 13;           # YEAR
              elseif( $type == 'blob' ) {
                if( $len > 65536 ) $type = 251;               # LONG BLOB
                elseif( $len > 255 ) $type = 252;             # BLOB
                else $type = 249;                             # TINY BLOB
              } elseif( $type == 'string' ) $type = 253;       # VARCHAR
              else 
                $type = 252;
              dump( $type );
              dump( $fl );
              dump( $len );
            }
            for( $i = 0; $i < $height; ++$i ) {
              $row = mysql_fetch_row( $result );
              for( $j = 0; $j < $width; ++$j ) 
                if( is_null($row[$j]) ) 
                  dump( '' );
                else
                  dump( ' '.$row[$j] );
            }
            mysql_free_result( $result );
          }
        }
      }
      mysql_free_result( mysql_query( $commit ? 'COMMIT' : 'ROLLBACK' ) );
    
    } elseif( $_POST['server'] == 'pgsql' ) {
    
      $conn = '';
      if( $_POST['host'] != '' ) $conn .= "host=$_POST[host]";
      if( $_POST['port'] != '' ) $conn .= " port=$_POST[port]";
      if( $_POST['dbname'] != '' ) $conn .= " dbname=$_POST[dbname]";
      if( $_POST['user'] != '' ) $conn .= " user=$_POST[user]";
      if( $_POST['password'] != '' ) $conn .= " password=$_POST[password]";
      $conn = pg_connect( $conn ) || pgerr('some connection error');
    
      if( !$commit || array_key_exists( 'r2', $_POST ) ) 
        pg_free_result( pg_query( 'BEGIN' ) );
      $result = FALSE;
      for( $rn = 1; $rn < 1000; ++$rn ) {
        if( !array_key_exists( 'r'.$rn, $_POST ) )
          break;
        $data = 'OK:';
        $req = $_POST['r'.$rn];
        if( $req == 'connect' ) {
          dump( 0 );
          dump( 0 );
          dump( 0 );
        } elseif( substr($req,0,11) == 'blob_create' ) {
          list($oid) = sscanf( $req, 'blob_create %u' );
          pg_free_result( pg_query( $commit ? 'COMMIT' : 'ROLLBACK' ) );
          pg_free_result( pg_query( 'BEGIN' ) );
          $oid = pg_lo_create() or pgerr('lo_create failed');
          pg_free_result( pg_query( 'COMMIT' ) );
          pg_free_result( pg_query( 'BEGIN' ) );
          dump($oid);
        } elseif( substr($req,0,11) == 'blob_delete' ) {
          list($oid) = sscanf( $req, 'blob_delete %u' );
          $oid = pg_lo_unlink($oid) or pgerr('lo_unlink failed');
        } elseif( substr($req,0,10) == 'blob_write' ) {
          list($oid) = sscanf( $req, 'blob_write %s ' );
          $bin = substr($req,12+strlen($oid));
          $obj = pg_lo_open($oid,'w') or pgerr( 'lo_open failed' );
          $res = pg_lo_write($obj,$bin) or pgerr( 'lo_write failed' );
          pg_lo_close($obj);
          dump($res);
        } elseif( substr($req,0,9) == 'blob_read' ) {
          list($oid) = sscanf( $req, 'blob_read %u' );
          $obj = pg_lo_open($oid,'r') or pgerr( 'lo_open failed' );
          pg_lo_seek($obj,0,PGSQL_SEEK_END);
          $len = pg_lo_tell($obj);
          pg_lo_seek($obj,0,PGSQL_SEEK_SET);
          $res = pg_lo_read($obj,$len) or pgerr( 'lo_read failed' );
          pg_lo_close($obj);
          dump($res);
        } else {
          $result = pg_query($req) or pgerr("error at request: $req");
          if( pg_result_status($result) == PGSQL_COMMAND_OK ) {
            dump( 0 );
            dump( pg_affected_rows($result) );
            dump( pg_last_oid($result) );
            pg_free_result($result);
          } elseif( pg_result_status($result) == PGSQL_EMPTY_QUERY ) {
            dump( 0 );
            dump( 0 );
            pg_free_result($result);
          } elseif( pg_result_status($result) == PGSQL_TUPLES_OK ) {
            $width = pg_num_fields($result);
            $height = pg_num_rows($result);
            dump($width);
            dump($height);
            for( $i = 0; $i < $width; ++$i ) {
              $type = pg_field_type( $result, $i );
              dump( pg_field_name( $result, $i ) );
              dump( $type );
              dump( pg_field_size( $result, $i ) );
            }
            for( $i = 0; $i < $height; ++$i ) {
              $row = pg_fetch_row( $result );
              for( $j = 0; $j < $width; ++$j ) 
                if( is_null($row[$j]) ) 
                  dump( '' );
                else
                  dump( ' '.$row[$j] );
            }
            pg_free_result( $result );
          } else {
            $e = pg_result_error($result);
            pg_free_result($result);
            err( $e );
          }
        }
      }
      pg_free_result( pg_query( $commit ? 'COMMIT' : 'ROLLBACK' ) );
    
    } else {
      err("server type '$_POST[server] is not supported");
    }
    if( $data != '' ) echo $data;
    ?>


    Der Code steckt in einer Datei namens emsproxy.php und befand sich seltsamer weise auf meinem Testaccount bei Funpic.
    Und ich weiß 100%ig das ich eine solche Datei nicht hochgeladen habe

    Auf dem Funpicaccount laufen mehrere Scriptversionen paralell es besteht also die möglichkeit das sich da jemand zu schaffen gemacht hat.
    Omnia bona erunt
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    SLJ Hall Of Fame
    Registriert seit
    18.05.2004
    Beiträge
    15.492
    Beitragswertungen
    3 Beitragspunkte
    Auf jeden fall versucht der mit der db kontakt aufzunehmen,...
    externer Link
    Ilch 1.0.4 PHP 7.0 und PDO Fähig na klar lächeln
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    HeX Hall Of Fame
    Registriert seit
    14.01.2006
    Beiträge
    2.113
    Beitragswertungen
    1 Beitragspunkte
    jo, der schaut was für mysql server das ist und versucht kontakt aufzunehmen.

    glaub aber da gehören noch paar dateien dazu, oder wo nimmt der die zugangs daten her?? das script ist etwas über mein php skill^^
    Discite moniti!
    www.pixelbash.de
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Ithron Hall Of Fame
    Registriert seit
    21.01.2006
    Beiträge
    2.659
    Beitragswertungen
    24 Beitragspunkte
    das ganze is schwer zu durchschauen.. weil der da halt (wie man oben sieht) eigene funktionen hat die er immer wieder nimmt.. hab mich bestimmt jetz schon 3 mal gefragt welche funktion das nochmal war^^


    so wie mir das ganze scheint... versucht das script aus den arrays irgentwas zu lesen...

    ehrlich gesagt.. auch ein wenig zu hoch für mich... das ganze müsste man sich mal genau ansehen..


    da fällt mir doch glatt wieder was ein:
    wie läufts eigentlicht mit der "bestellung" von einem php sicherheits überprüfer?
    wollte ilch sich nich mal so einen anschaffen?^^
    ZitatZitat geschrieben von loW

    Ja ich habs gesehen und wenn ichs kostenlos bekomm dann zahl ich doch nix dafür oder?
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Nero Hall Of Fame
    Registriert seit
    12.11.2005
    Beiträge
    987
    Beitragswertungen
    0 Beitragspunkte
    du übergibst dem daten für die db per POST und der zeigt dir denne an was du da für ne tabelle/db hast zwinker

    ajo, das script unterstützt mysql und PostgreSQL

    Mfg Nero


    Zuletzt modifiziert von Nero am 18.03.2007 - 23:22:33
    ilch-Portal coming soon lachen

    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Plauder Ecke

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten