2013-07-03 24 views
17

Po prostu zobaczyłem to w naszych dziennikach żądań. Co oni próbowali osiągnąć?SQL injection? CHAR (45,120,49,45,81,45)

Żądanie pełnej ciąg jest:

properties?page=2side1111111111111 UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45),CHAR(45,120,49,48,45,81,45),CHAR(45,120,49,49,45,81,45),CHAR(45,120,49,50,45,81,45),CHAR(45,120,49,51,45,81,45),CHAR(45,120,49,52,45,81,45),CHAR(45,120,49,53,45,81,45),CHAR(45,120,49,54,45,81,45) -- /* 

Edit: Jako wyszukiwarka google nic nie powrócić użyteczne Chciałem zadać pytanie dla ludzi, którzy borykają się z tym samym.

+0

Co zabawne, jest to teraz drugi wynik wyszukiwania oryginalnego w Google. – roo

Odpowiedz

7

To jest tylko test dla iniekcji. Jeśli atakujący może zobaczyć xQs na wyjściu, wówczas będzie wiedział, że możliwe jest wstrzyknięcie.

Nie ma "ryzyka" z tego konkretnego zapytania.

Deweloper nie powinien zwracać uwagi na jakiekolwiek mechanizmy, formaty i znaczenia wtrysku - to nie jest jego sprawa.

Istnieje tylko jeden Powód dla wszystkich nieskończonej liczby zastrzyków - nieprawidłowo sformatowane zapytanie . Dopóki twoje zapytania są poprawnie sformatowane, wstrzykiwanie SQL nie jest możliwe. Skoncentruj się na swoich zapytaniach, a nie na metodach SQL injection.

+0

"Deweloper nie powinien zwracać uwagi na wszelkie mechanizmy, formaty i znaczenia wtrysku - to nie jest jego sprawa." - Czy możesz rozwinąć?Dla mnie brzmi to tak, jakbym w ogóle nie dbał o wstrzyknięcie SQL. Lub umieść całe moje zaufanie w każdej strukturze, której używam. – roo

+0

Tak, tak. To wszystko - nie powinieneś. –

+0

To szaleństwo! Jeśli radzisz ludziom, aby tak myśleli, to dlaczego napisałeś https://github.com/colshrapnel/safemysql? – roo

5

Funkcja Char() interpretuje każdą wartość jako liczbę całkowitą i zwraca ciąg znaków na podstawie podanych znaków za pomocą wartości kodowych tych liczb całkowitych. Przy wartości Char() wartości NULL są pomijane. Funkcja jest używana w Microsoft SQL Server, Sybase i MySQL, a RDBMS używa CHR().

Funkcja SQL jest przydatna, gdy (na przykład) addslashes() dla PHP jest używana jako środek ostrożności w zapytaniu SQL. Korzystanie z Char() usuwa potrzebę cudzysłowu wewnątrz wstrzykniętego zapytania.

Przykładem niektórych kodu PHP podatne na iniekcji SQL przy użyciu Char() będzie wyglądać podobnie do następującego:

$uname = addslashes($_GET['id']); 
$query = 'SELECT username FROM users WHERE id = ' . $id; 

Podczas addslashes() został użyty skrypt zawiedzie prawidłowo zdezynfekować wejście jak nie ma cytat spływu znak. To może być eksploatowane przy użyciu następujący ciąg SQL injection, aby załadować plik /etc/passwd:

Źródło: http://hakipedia.com/index.php/SQL_Injection#Char.28.29

+0

Niezłe wprowadzenie do wtrysku, ale tak naprawdę nie odpowiada na pytanie, które jest "czym konkretnie _ SQL próbował się nauczyć?" – paxdiablo

+0

Jestem zainteresowany zarówno specyficznym SQL, który próbowali wykonać, ale także jak to może działać. Jako że wyszukiwarka google nie zwróciła niczego użytecznego, chciałem rozpocząć dyskusję dla osób, które mogą być zagrożone. – roo

+0

@roo, dyskusje nie są tym, za co jest SO. Jeśli stwierdzasz, że chcesz wiedzieć, jak działa obecny atak (i ​​wygląda na to, że tak jest w tym przypadku), to już inna sprawa. Jednak chęć rozpoczęcia dyskusji może spowodować zamknięcie i usunięcie pytań. – paxdiablo

Powiązane problemy