Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Уязвимости (https://forum.antichat.xyz/forumdisplay.php?f=74)
-   -   Как обойти фильтры [SQL INJECTION] (https://forum.antichat.xyz/showthread.php?t=137739)

Krist_ALL 27.08.2009 17:22

Как обойти фильтры [SQL INJECTION]
 
играюсь с http://forum.antichat.ru/thread130070-damn.html

не могу придумать как провести инекцию...
PHP код:

<?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++;
    }
    }
?>

регистр глобалс офф.
хелп

pento 27.08.2009 17:25

А оно здесь точно есть? 0_о

S00pY 27.08.2009 17:27

Это можно как-то обойти?0o

Krist_ALL 27.08.2009 17:28

да. это высший уровень. и он както обходится....

Qwazar 27.08.2009 17:35

Цитата:

Сообщение от Krist_ALL
да. это высший уровень. и он както обходится....

Выкладывай тогда весь код.

Krist_ALL 27.08.2009 17:38

PHP код:




<?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++;
    }
    }
?>


S00pY 27.08.2009 17:42

Мне кажеться что хрен тут чё обойдёшь... если я не прав то я ударюсь головою в стену.

BlackSun 27.08.2009 17:45

Это не обходится.

Krist_ALL 27.08.2009 17:47

Цитата:

Сообщение от BlackSun
Это не обходится.

скачай и глянь. э не я выдумал код этот. вон написана хак тренировачная площадка....я глянул исходник и офигел сам.

razb 27.08.2009 17:55

на то уровень защиты и максимальный что бы его не обойти )

Qwazar 27.08.2009 18:12

Можно попробовать поиграться с мультибайтовыми кодировками.

[Raz0r] 27.08.2009 18:25

Это тоже не прокатит, так как используется mysql_real_escape_string(), а не addslashes()

S00pY 27.08.2009 18:27

is_numeric() смущает само больше((

eLWAux 27.08.2009 18:33

в \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

eLWAux 27.08.2009 18:41

да они хакеры, хуле

предлагают провести xss , обойти htmlspecialchars
>>echo '<pre>Hello ', htmlspecialchars($_GET['name']), '</pre>';

lfi в $file:
PHP код:

switch($file){
  default:
  include(
"fi_content.php");
  break;



Krist_ALL 27.08.2009 18:50

какой-то бредовый скрипт...
eLWAux, я сразу смореть исходники)

ElteRUS 27.08.2009 19:21

Цитата:

Сообщение от eLWAux
пройди сначало \sqli_med.php.. попробуй-ка обойти mysql_real_escape_string

sqli_med.php
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
PHP код:

    $id $_GET['id'];
    
$id stripslashes($id);
    
$id mysql_real_escape_string($id); 

Возможно из-за stripslashes+mysql_real_escape_string и при меджик_квотес=вкл а так же при правильно составленном значении переменной $id (ну там ////') получится так что некоторые слэши\кавычки заэкранируют друг друга, а некоторые нет ((; <= Вероятно я написал бред, просто строю предположения в какую сторону копать. А вот как они хотят обойти is_numeric - действительно интересно.


Время: 14:05