Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> sqlinjection z union
nospor
post 16.02.2009, 17:24:23
Post #1





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Pytanie teoretyczne:
czy jest możliwość wstawienia zapytania z union, do następującej teoretycznej sytuacji:

skrypt niezabezpieczony w zaden sposob przed sqlinjection, mozna wkladac co nam się chce.

wykonywane zapytanie:
  1. SELECT cos, cos2, cos3 FROM tabela WHERE pole = 'cosZforma';

gdzie cosZforma to dana, która moze w formularzu dowolnie modyfikowac.

Chcac wstawic uniona, wystarczy wiec za cosZforma wstawic:
' union select c1,c2,c3 from innatabela where '1=1
w rezulatacie otrzymamy poprawne zapytanie z union
  1. SELECT cos, cos2, cos3 FROM tabela WHERE pole = '' UNION SELECT c1,c2,c3 FROM innatabela WHERE '1=1';


pojawia sie jednak problem, gdyz nasze glowne zapytanie poprzedzane jest zapytaniem zliczającym, czyli
  1. SELECT count(*) FROM tabela WHERE pole = 'cosZforma';

w rezulatacie po wstawieniu naszej zmiennej otrzymamy
  1. SELECT count(*) FROM tabela WHERE pole = '' UNION SELECT c1,c2,c3 FROM innatabela WHERE '1=1';

Co wywali nam zapytanie, gdyz union dostarczy nam inną liczbę kolumn.
Skrypt dalej sie nie wykona, bo zapytanie z count(*) zwraca nam false i nie jedziemy dalej.

Czy istnieje jakies ominiecie tego? By w jednym ciągu zawrzec zarówna jedną kolumne i kilka kolumn? Tak by przeszlo zarowno przez zapytanie z count() jak i drugie pobierające dane?

ps: nie chce nikogo hackowac. Interesuje mnie, czy jest to możliwe.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 17.06.2025 - 23:03