![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Moderatorzy Postów: 36 559 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:
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
pojawia sie jednak problem, gdyz nasze glowne zapytanie poprzedzane jest zapytaniem zliczającym, czyli
w rezulatacie po wstawieniu naszej zmiennej otrzymamy
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. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 43 Dołączył: 9.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Raczej się nie wyłoży, chyba, że czegoś nie rozumiem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Załóżmy, że nazwy kolumn w tej tabeli `innatabela` to c1, c2, c3 Do pola formularza można wpisać: Kod ' LIMIT 0 UNION SELECT CONCAT(c1, SPACE(1), c2, SPACE(1), c3) FROM innatabela LIMIT 1 Zatem zapytanie będzie następujące:
I powinno zwrócić wartości pól c1, c2, c3 oddzielone spacjami, o ile oczywiście pola w tej tabeli tak się nazywają |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 10:10 |