sql injection how to?

HackForum

sql injection how to?#
Ahoj vsichni,
vcera jsem premyslel nad jednou veci, a nenasel jsem reseni.
Mam sql dotaz, ve kterem muzu upravit hodnotu limitu.
Takze konkretni priklad:

select * from table where 1 limit 0, 10 ORDER BY id

co muzu jenit je hodnota 0 v limitu.
Jak muzu upravit dotaz tak, aby jsem ziskal treba nazvy tabulek?
Prave co mi tam dela problem je prave to order by, ktere je na konci dotazu a ktere se tam pridava.
Diky.
(odpovědět)
linmake | 88.146.210.*28.3.2008 15:06
re: sql injection how to?#
omg.. kdyby sis precetl alespon jeden clanek o sql injekci, vedel by jsi, jak ignorovat cokoliv za tvym prikazem..

naschval ti sem nenapisu odpoved - rikam, je to v clanku zde od ccuminna, od rubberducka a od spousty dalsich na dalsich webech (SP...)

takze apeluji na ostatni, nepiste mu sem konkretni reseni, vim ze je to na dva znaky, ale at se hoch nauci cist..

----------
Cow power by Gentoo...
(odpovědět)
Anonymous_ | E-mail28.3.2008 15:25
re: sql injection how to?#
Nehlede na to, ze ten dotaz nebude fungovat.
(odpovědět)
RubberDuck. | 85.71.165.*28.3.2008 15:47
re: sql injection how to?#
Zaprve ten dotaz je spatne, mel by vypadat ve stylu...
select * from table where column='xyz' limit 0, 10 ORDER BY id
A na "odmazani" zbytku sql dotazu se nejčastěji používá /*
(odpovědět)
H2O | 89.235.0.*29.3.2008 16:20
re: sql injection how to?#
to ses teda borec, ze jsi mu to dohodil, az pred xicht...

----------
Cow power by Gentoo...
(odpovědět)
Anonymous_ | E-mail5.4.2008 15:03
re: sql injection how to?#
select * from table where 1 limit [0, 10; drop table --] 10 ORDER BY id

select * from table where 1 limit [0, 10 UNION SELECT heslo FROM looseri WHERE uzivatele=CHAR(000101024585128545) AS sloupec_z_uzivatele --] 10 ORDER BY id

akorat nevim kam pak dat CONCAT(sloupec_z_table,sloupec_z_uzivatele) AS sloupec_2_z_table
... doufam ze se f tom vyznate...
(odpovědět)
sg11.tk_ | 79.127.172.*31.3.2008 12:48
re: sql injection how to?#
ty jsi koukam uplny odbornik, takhle se ztrapnit :)
(odpovědět)
prc | 213.211.51.*31.3.2008 20:11
re: sql injection how to?#
heh, sry, to byla jen nakopavka. zatim sem se nijak SQL Injection nezabýval... zatím sem ani popužítí unionů se nenaučil... njn, - doženem, a napíšem :-)
(odpovědět)
sg11.tk_ | 79.127.172.*1.4.2008 12:10
OPRAVA#
linmake: máš chybu v dotazu, a opravdu by sis to měl najít sám...

PRC: Tak sem svoji chybu napravil, a napsal o tom... [link] tak snad odpustíš ;-)
(odpovědět)
sg11.tk_ | 79.127.172.*2.4.2008 10:27
re: sql injection how to?#
ahoj, dlouho jsem tady nebyl, bohuzel mi nikdo neporadil.
Vite, ja jsem cet nejaky clanky o sql injekci, jenom mi to neni uplne jasne.

Takze jeste jednou, mam dotaz:

SELECT name, name FROM table WHERE 1 order by id limit 0, 10

a prave namisto te 0 v limitu muzu doplnit prakticky cokoli.
Samozrejme poznamky typu /* tam dam, jenomze jak mam zjistit napriklad informace jako treba nazvy tabulek a podobne.
Kdyz pouziju union, tak se mi vypise chyba, ze nemuzu pouzivat union ve spojeni s order by.
Jeste jsem premyslel nad join, ale nevim jak mam udelat v joinu uplne novy select, aby jsem mohl z takoveho selectu zjistit napriklad ty nazvy tabulek.
(odpovědět)
linmake | 88.146.210.*3.4.2008 22:00
re: sql injection how to?#
Ten dotaz nahore jsem napsal spatne :-) za to se omlouvam, kdyby fungoval v takovem tvaru jak je napsany v mem privnim prizpevku, tak by bylo samozrejme po problemu.
(odpovědět)
linmake | 88.146.210.*3.4.2008 22:01
re: sql injection how to?#
se nauc SQL vole a hned budes vedet :P
(odpovědět)
_( | )_ | 90.176.138.*4.4.2008 8:23
re: sql injection how to?#
hmm. tak diky na pomoc. tohle mi opravdu pomohlo.
Ja vas lidi nechapu.
Porad si stezujete, ze se tady resi picoviny, kdyz a kdyz se snazim zeptat na neco rozumneho, tak napisete, at se to naucim.
Tim padem nechapu vyznam tohoto fora, ve kterem je temer porad stejna odpoved, at se to naucim.
Diky.

Hledal jsem na netu, dival jsem se do manualu, ale nenasel.
Pokud vis, tak nechapu proc mi to nenapises.
Ale ok. Beru to.
Tak diky. Soom u me klesa a klesa, a neni to soomeme, ale spise komunitou kolem soomu. Lidi, kteri ze sebe asi delaji to co nejsou. Ok.
(odpovědět)
linmake | 88.146.210.*4.4.2008 15:25
re: sql injection how to?#
linmake: Pri SQL Injection jde o injektovani hodnoty vysledku dotazu z databaze. Ne parametru casti LIMIT. Tato cast prijima pouze cele cislo a proto je nesmysl pokouset se ho injektovat => povede vzdy k chybe.
(odpovědět)
RubberDuck. | 85.71.165.*4.4.2008 16:29
re: sql injection how to?#
2RubberDuck: no prave ze namas pravdu.
Pokud si vemes ten dotaz, ktery jsem ja napsal, tak pokud by tam nebylo to ORDER BY, tak tam muzes pridat napriklad union.
Vim ze parametr je cislo, popripade cisla, ovsem pokud neni web zabezpeceny, a neni tato hodnota pretypovana, tak muzes dotaz doplnit prakticky o jakoukoli cast.

Takze napriklad:
Limit 1, 10
kdy muzes upravovat hodnotu 1
muzes doplnit o:
1 union all select .... /*

Problem mi tam dela, jak jsem psal, to order by
(odpovědět)
linmake | 88.146.210.*4.4.2008 16:47
re: sql injection how to?#
linmake: Tohle jsem resil driv take. Problem mi ale delala prave cast LIMIT, ktera prijima dva argumenty ktere musi byt pouze a jen cela cisla.

mysql> SELECT * FROM users WHERE prava = 1 LIMIT 1 and 1=1;
ERROR 1064 (42000): Vaše syntaxe je nějak divně blízko 'and 1=1' na řádku 1.
(odpovědět)
RubberDuck. | 85.71.165.*4.4.2008 17:01
re: sql injection how to?#
No vsak ja tam nedoplnuju podminku.
Jinak limit nemusi mit dva parametry, ale staci jeden.
A prave proto jsem doplnil dotaz o union a nakonec dal zacatek poznamky, ktery to oreze.
Samozrejme ze to co pises ty je blbost.
(odpovědět)
linmake | 88.146.210.*4.4.2008 17:48
re: sql injection how to?#
Ale pochop. Ty tam muzes nacpat cokoliv a vzdy to povede k syntakticke chybe. Jakej je rozdil mezi logickou podminkou, ktera bude vyhodnocena jako TRUE a UNIONem, ktery bude pri existenci poctu sloupcu v tabulce, pripadne nazvu sloupcu v tabulce, vyhodnocen taktez jako TRUE. Ale o to nejde.. Jde o fakt, ze se nejedna o CELA CISLA a s tema neumi LIMIT pracovat. Demonstruj mi nazorne, kde ma me tvrzeni trhliny. Pokud dokazes, ze se mylim, milerad se ti omluvim a uznam svoji chybu. Pro zacatek si spust MySQL pres konzoli a zkousej, abys videl jake chyby dostanes.
(odpovědět)
RubberDuck. | 85.71.165.*4.4.2008 17:59
re: sql injection how to?#
No tak nevim, jestli se spravne chapeme, ale mam napriklad teda v PHP:

$sql = "SELECT * FROM table LIMIT " . $_GET['from'] . ", 10";

kde promennou from muzu prez GET zmenit.
A namisto te promenne muzu napsat to co jsem psal uz predtim.
Vyzkouseno, samozrejme funguje.
Muzes tam dat union a dalsi select, coz je samozrejmost a tim padem nevim co presne ty myslis ze nejde. Nebo popripade zda jsi me treba spatne nepochopil.
Celou dobu resim problem, kdy je pred takovymto limitem ORDER BY, ktery ve spojeni s union pouzit zrejme nejde.
(odpovědět)
linmake | 88.146.210.*4.4.2008 18:34
re: sql injection how to?#
Porad mi nejak unika podstata..
Stav se na IRC.

Server: irc.security-portal.cz
Channel: #skola_pentesting

Takhle to nevyresime ani za mesic..
(odpovědět)
RubberDuck. | 85.71.165.*4.4.2008 18:42
re: sql injection how to?#
RubberDuck - o využití unionu jsem napsal na webu sg11.tk ( [link] ) - schválně sem to zkoušel...
(odpovědět)
sg11.tk_ | 79.127.172.*7.4.2008 11:53
re: sql injection how to?#
myslim, ze RubberDuck toho vi o sqlinjekci mnohem, mnohem vice.. to dokazuje i X clanku co napsal ;) staci si je vyhledat..

----------
Cow power by Gentoo...
(odpovědět)
Anonymous_ | E-mail7.4.2008 19:45
re: sql injection how to?#
četl sis vůbec ten článek, který sg11.tk_ přikládá? :P

----------
Get enlightened!
(odpovědět)
mr.Crow | E-mail | Website7.4.2008 20:02
re: sql injection how to?#
Anonymous_: Bohuzel musim uznat svoji neznalost.. :) Coz me na druhe strane tesi a utvrzuje v myslence, ze se mam stale cemu ucit :) Ano. Lze provest injekci do LIMIT casti. Ovsem takova injekce se nechova vzdy tak, jak nastinil sg11.tk_, kteremu touto cestou dekuji za moje pouceni.. :) A ostatnim se omlouvam za informacni mistifikaci.. :)
(odpovědět)
RubberDuck. | 85.71.165.*7.4.2008 20:49
re: sql injection how to?#
Cau lidi,
omlouvam se, dlouho jsem tady nebyl.
Diky vsem za odpovedi, ale bohuzel porad zustava muj problem.
Jde o to, ze by jsem potreboval pouzit union, ktery sem muzu pridat prez hodnotu v LIMITU.
To uz je asi jasne.
Jenomze pred limitem je jeste navic order by, diky kteremu mi to nejde.
Nejde mi o to hacknout zadnej web. Chci to vedet jenom teoreticky, zda pri pouziti ORDER BY v dotazu jde do tohoto dotazu takovymto zpusobem pridat UNION ALL SELECT.
Aby jsem napriklad mohl zjistit strukturu databaze a podobne.


(odpovědět)
linmake | 88.146.210.*8.4.2008 14:02
re: sql injection how to?#
Na závěr bych přihodil manuálovou stránku ;-)
[link]

(odpovědět)
sg11.tk_ | 79.127.172.*8.4.2008 14:26
re: sql injection how to?#
sg11.tk_: diky. tuto manualovou stranku jsem samozrejme cetl.
Manual k MySQL mam procteny cely.
Ale muj dotaz porad pretrvava, protoze pro pouziti ORDER BY v sql dotazu by jsem musel k dotazu pridat zavorky, coz samozrejme neudelam, protoze muzu upravovat jenom tu jednu hodnotu v LIMITU.
Problem je prave v tom, ze samotne ORDER BY zustane v prvnim selectu.
(odpovědět)
linmake | 88.146.210.*8.4.2008 19:30

Zpět
Svou ideální brigádu na léto najdete na webu Ideální brigáda
 
 
 

 
BBCode