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:
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
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
SELECT count(*) FROM tabela WHERE pole = 'cosZforma';
w rezulatacie po wstawieniu naszej zmiennej otrzymamy
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.