![]() |
![]() ![]() |
![]() |
![]()
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:
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. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Hmmm... nie wiem jak z UNION'em ale wydaje mi się ze w ten sposob się nie da... za to można zrobić inne ciekawe sztuczki w ten sposób...
![]() // EDIT
Ten post edytował pyro 16.02.2009, 18:30:10 -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
ok
![]() Chodzi mi głównie, czy moge w ten sposob pobrac dane z innej tabeli. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 43 Dołączył: 9.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Można spróbować zastosować jakąś funkcję np. CONCAT(), też zwróci jeden wynik
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
@BaN tak, ale wowczas zapytanie wylozy sie na drugim etapie (normalny select) - wowczas tam nie bedzie sie zgadzala liczba kolumn
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
tak, ale wowczas zapytanie wylozy sie na drugim etapie (normalny select) - wowczas tam nie bedzie sie zgadzala liczba kolumn A zajrzałeś do mojego postu? // edit aaa sorry, nie zauwazylem roznic czasowych, pobierac z innych mozna, wsytarczy spojrzec na moj ostatni post. Ten post edytował pyro 16.02.2009, 18:33:13 -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
@pyro o tym, ze w ten sposob mozna pobrac to wiem
![]() Chodzilo mi o przyspieszenie tego etapu i dlatego chciałem dodać union. Gdyby nie te count() to bez problemu bym pobral, ale count() mnie zalatwia - dlatego zastanawiam sie czy mozna jakies uniwersalne zapytanie przy uzyciu np. IF napisac -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
@pyro o tym, ze w ten sposob mozna pobrac to wiem ![]() Chodzilo mi o przyspieszenie tego etapu i dlatego chciałem dodać union. Gdyby nie te count() to bez problemu bym pobral, ale count() mnie zalatwia - dlatego zastanawiam sie czy mozna jakies uniwersalne zapytanie przy uzyciu np. IF napisac no raczej by się to sprowadzało do tego samego... Poza tym w ten sposób możesz wyciągnąć dowolne dane w szybki sposob, wystarczy bot na kilkanascie,dziesiąt linijek i automatycznie bedzie dane podstawiał ![]() -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#9
|
|
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
![]() 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ą |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 36 557 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 ![]() @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 -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli w kodzie PHP jest to interpretowane w ten sposob:
to w takim wypadku raczej union na niewiele się zdziała, jeśli jednak w kodzie php jest to interpretowane tak: (nie ma potrzeby tak robic, ale widzialem skrypty w ktorych ludzie mimo to dają wynik do while() ![]()
To w takim wypadku wystarczy dodać najzwyklejsze UNION, wtedy druga wartośc nadpisze pierwszą (tą z count), a tą drugą wartością bedą dane wyciągnięte z użycią UNION ![]() Ten post edytował pyro 16.02.2009, 19:00:34 -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
nie, jest tak jak pisalem:
najpierw w php jest zapytanie z count() a potem w php jest zapytanie pobierające dane normalnym selectem. Jesli dostosujemy union do drugiego zapytania, to wywali nam sie na pierszym. Jak dostosujemy do pierwszego to wywali nam sie na drugim. wywali, czyli poleci wyjatek w php i skrypt konczy dzialanie. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#13
|
|
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 |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
W przypadku z while() powinno zwrocic login i haslo, czyli na stronie by się pojawiło coś w stylu: Znaleziono artykułów: wujek : crimson Chyba że ten ostatni post nie do mnie ![]() -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Chyba że ten ostatni post nie do mnie No chyba nie ![]() @BaN chyba nadal nie rozumiesz w czym rzecz ![]() No dobra, zakładam więc że się nie da. Dziękuję panom za dyskusję, pozostaje więc pisac bota ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
No chyba nie ![]() @BaN chyba nadal nie rozumiesz w czym rzecz ![]() No dobra, zakładam więc że się nie da. Dziękuję panom za dyskusję, pozostaje więc pisac bota ![]() Lub dodać najzwyklejsze union jesli zapytanie przechodzi przez pętle... To zabawne, że w Twoim poście czuć nutkę chęci d wykorzystania tego gdzieś ![]() -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#17
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Lub dodać najzwyklejsze union jesli zapytanie przechodzi przez pętle... No tlumacze ci przecież, ze przechodzi przez dwa zapytania. Jak dopasujesz go do pierwszego to wylozy sie na drugim. Jak dopasujesz go do drugiego to wylozy sie na pierwszym.mysql_query() zwraca ci blad i juz skrypt nie dochodzi do zadnych petli. Cytat To zabawne, że w Twoim poście czuć nutkę chęci d wykorzystania tego gdzieś Nic z tych rzeczy. Przeprowadzam audyt aplikacji. Dziurawa jak ser szwajcarski. Bez problemu moge wydobyc każde dane z tabel, poprzez napisanie bota, o którym juz rozmawialismy. Zastanawialem sie jednak, czy w opisanej przeze mnie sytujacji mozna to zrobic szybciej i przyjemniej ![]() I gdyby nie to zapytanie z count() to nie bylo by problemu. Jednak ono komplikuje sprawę. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 17.06.2025 - 14:38 |