2010-10-20 15 views
7

Patrząc przez niektórych dziennikach apache, mam biegać w następujący wzorzec kilka razy (URL dekodowane):Jakie jest znaczenie SQL 0x5E5B7D7E?

GET /foo.php?id=1 and union select 0x5E5B7D7E,0x5E5B7D7E,0x5E5B7D7E,... -- 

Oczywiście jest to próba SQL injection. Ale dlaczego stała pokazana powyżej? Nie rozumiem, jak to mogło być szczególnie istotne, choć wydaje się, że pojawia się dość często.

Co jest warte, powyższe stałe mapy do następujących znaków ASCII: "^[}~", lub "~}[^", jeśli odwrócić kolejność bajtów. Wartość dziesiętna to 1,583,054,206, w ósemkowym jest to 013626676576. Kod wydaje się nie odwzorowywać użytecznej sekwencji instrukcji x86.

Wyszukiwarka Google podająca tę liczbę ujawnia po prostu pozostałości prób użycia tego samego ataku polegającego na wstrzyknięciu SQL w innych witrynach - brak informacji o samym ataku.

Ktoś ma jakiś wgląd?

+0

Moje dzikie przypuszczenie jest takie, że słowa kluczowe sql wydają się być częścią większego oświadczenia, ponieważ sekwencja zaczyna się od "i", liczby po słowach kluczowych niekoniecznie są częścią instrukcji sql, którą próbują wstrzyknąć . może oni próbują wstrzykiwać sql i non-sql w tym samym czasie? – akonsu

+0

Tak, zauważyłem, że "i związek" to trochę dziwna konstrukcja, ale moim prawdziwym pytaniem jest: dlaczego TO liczba? Wydaje się być częstym elementem ataków typu SQL injection. – tylerl

+0

Może to być próba wykorzystania określonego oprogramowania. Jakiego rodzaju oprogramowanie działa w Twojej witrynie? – mellowsoon

Odpowiedz

8

Ta wartość jest unikalnym identyfikatorem. Jeśli na stronie pojawi się wartość "^[}~", to bot wie, że jesteś podatny na wtrysk sql, gdzie tak jakby pojawiła się wartość "0x5E5B7D7", to nie została ona zinterpretowana przez serwer sql. Ten test wtrysku sql prawdopodobnie rozpoczyna się od tylko jednego 0x5E5B7D7E, a następnie kontynuuje do predefiniowanej liczby z nich. Dzieje się tak dlatego, że przy unii wybierz związek musi zwrócić taką samą liczbę kolumn, jak zaznaczenie, do którego jest dołączany, a bot musi brutalnie wymusić tę wartość.

Należy zauważyć, że ten test nie zadziała w przypadku niewidocznego iniekcji sql, ponieważ wartość "^[}~" nie będzie widoczna. A blind sql injection test dla mysql byłoby wstrzykiwanie połączenia do sleep(30) lub BENCHMARK(5000000,md5(1337)). Spowoduje to załadowanie strony na kilka sekund, co oznacza, że ​​wykonywany jest ten kod SQL.