Post
#1
|
|
|
Grupa: Moderatorzy Postów: 36 561 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: Moderatorzy Postów: 36 561 Pomógł: 6315 Dołączył: 27.12.2004 |
Cytat no raczej by się to sprowadzało do tego samego... No nie, bo jakby udalo by sie spreparowac zapytanie, ktore za pierwszym razem zwroci jedną kolumne, a za drugim kilka, - to juz jestem w domu. Niestety uzycie IF na SELECT nie zdaje rezultatuCytat wystarczy bot na kilkanascie,dziesiąt linijek i automatycznie bedzie dane podstawiał To tez wiem. Ale uczepilem sie tego uniona i basta (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) @BaN no tak, to dla przypadku z count(). Ale wstaw to sobie teraz do tego zapytania
Twoj union zwraca tylko jedno pole, a teraz potrzeba trzech |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 43 Dołączył: 9.11.2007 Ostrzeżenie: (0%)
|
Twoj union zwraca tylko jedno pole, a teraz potrzeba trzech Zatem na początku należy wyznaczyć liczbę kolumn w pierwszym zapytaniu SELECT Moim zdaniem można to zrobić następująco: sprawdzamy czy jest jedno pole: Kod ' LIMIT 0 UNION SELECT 1 sprawdzamy czy są dwa pole: Kod ' LIMIT 0 UNION SELECT 1,2 itd. Po znalezieniu liczby pól można chyba zastosować rozwiązanie, które proponowałem |
|
|
|
nospor sqlinjection z union 16.02.2009, 17:24:23
pyro Hmmm... nie wiem jak z UNION'em ale wydaje mi ... 16.02.2009, 18:16:14
nospor ok
Chodzi mi głównie, czy moge w ten sposob pobra... 16.02.2009, 18:17:46
BaN Można spróbować zastosować jakąś funkcję np. CONCA... 16.02.2009, 18:22:52
nospor @BaN tak, ale wowczas zapytanie wylozy sie na drug... 16.02.2009, 18:25:39 
pyro Cytat(nospor @ 16.02.2009, 18:25:39 )... 16.02.2009, 18:32:41
nospor @pyro o tym, ze w ten sposob mozna pobrac to wiem ... 16.02.2009, 18:35:25 
pyro Cytat(nospor @ 16.02.2009, 18:35:25 )... 16.02.2009, 18:37:10
BaN Raczej się nie wyłoży, chyba, że czegoś nie rozumi... 16.02.2009, 18:41:55
pyro Jeżeli w kodzie PHP jest to interpretowane w... 16.02.2009, 18:49:49
nospor nie, jest tak jak pisalem:
najpierw w php jest zap... 16.02.2009, 18:52:12
pyro [SQL] pobierz, plaintext mysql> SELECT count... 16.02.2009, 18:55:36
nospor CytatChyba że ten ostatni post nie do mnieNo chyba... 17.02.2009, 09:36:24 
pyro Cytat(nospor @ 17.02.2009, 09:36:24 )... 17.02.2009, 13:12:04
nospor CytatLub dodać najzwyklejsze union jesli zapytanie... 17.02.2009, 13:15:57 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 07:05 |