Просмотр полной версии : Как обойти фильтры [SQL INJECTION]
Krist_ALL
27.08.2009, 17:22
играюсь с http://forum.antichat.ru/thread130070-damn.html
не могу придумать как провести инекцию...
<?php
// Retrieve data
$id = $_GET['id'];
$id = stripslashes($id);
$id = mysql_real_escape_string($id);
if (is_numeric($id)){
$getid="SELECT first_name, last_name FROM users WHERE user_id = '$id'";
$result=mysql_query($getid) or die('<pre>' . mysql_error() . '</pre>' );
$num=mysql_numrows($result);
$i=0;
while ($i < $num) {
$first=mysql_result($result,$i,"first_name");
$last=mysql_result($result,$i,"last_name");
echo "<pre>ID: $id<br>First name: $first<br>Surname: $last</pre>";
$i++;
}
}
?>
регистр глобалс офф.
хелп
А оно здесь точно есть? 0_о
Это можно как-то обойти?0o
Krist_ALL
27.08.2009, 17:28
да. это высший уровень. и он както обходится....
да. это высший уровень. и он както обходится.... Выкладывай тогда весь код.
Krist_ALL
27.08.2009, 17:38
<?php
// Retrieve data
$id = $_GET['id'];
$id = stripslashes($id);
$id = mysql_real_escape_string($id);
if (is_numeric($id)){
$getid="SELECT first_name, last_name FROM users WHERE user_id = '$id'";
$result=mysql_query($getid) or die('<pre>' . mysql_error() . '</pre>' );
$num=mysql_numrows($result);
$i=0;
while ($i < $num) {
$first=mysql_result($result,$i,"first_name");
$last=mysql_result($result,$i,"last_name");
echo "<pre>ID: $id<br>First name: $first<br>Surname: $last</pre>";
$i++;
}
}
?>
Мне кажеться что хрен тут чё обойдёшь... если я не прав то я ударюсь головою в стену.
BlackSun
27.08.2009, 17:45
Это не обходится.
Krist_ALL
27.08.2009, 17:47
Это не обходится.
скачай и глянь. э не я выдумал код этот. вон написана хак тренировачная площадка....я глянул исходник и офигел сам.
на то уровень защиты и максимальный что бы его не обойти )
Можно попробовать поиграться с мультибайтовыми кодировками.
Это тоже не прокатит, так как используется mysql_real_escape_string(), а не addslashes()
is_numeric() смущает само больше((
в \sqli_low.php (самый легкий) никакой защити:
>> $id=$_GET['id'];
>>$getid="SELECT first_name, last_name FROM users WHERE user_id = '$id'";
в \sqli_med.php (средный) уже защита:
>> $id = mysql_real_escape_string($id);
в \sqli_high.php защита stripslashes и mysql_real_escape_string.
все уровни надо проходить по очереди.
пройди сначало \sqli_med.php.. попробуй-ка обойти mysql_real_escape_string
да они хакеры, хуле
предлагают провести xss , обойти htmlspecialchars
>>echo '<pre>Hello ', htmlspecialchars($_GET['name']), '</pre>';
lfi в $file:
switch($file){
default:
include("fi_content.php");
break;
}
Krist_ALL
27.08.2009, 18:50
какой-то бредовый скрипт...
eLWAux, я сразу смореть исходники)
пройди сначало \sqli_med.php.. попробуй-ка обойти mysql_real_escape_string
sqli_med.php
$id = $_GET['id'];
$id = mysql_real_escape_string($id);
$getid="SELECT first_name, last_name FROM users WHERE user_id = $id";
$result=mysql_query($getid) or die('<pre>' . mysql_error() . '</pre>' );
Здесь переменная $id не обрамляется кавычками в запросе. Тобишь mysql_real_escape_string до фени )) Я находил такую скулю в реальном движке http://forum.antichat.ru/showpost.php?p=1279348
Что касается sqli_high.php
$id = $_GET['id'];
$id = stripslashes($id);
$id = mysql_real_escape_string($id);
Возможно из-за stripslashes+mysql_real_escape_string и при меджик_квотес=вкл а так же при правильно составленном значении переменной $id (ну там ////') получится так что некоторые слэши\кавычки заэкранируют друг друга, а некоторые нет ((; <= Вероятно я написал бред, просто строю предположения в какую сторону копать. А вот как они хотят обойти is_numeric - действительно интересно.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot