SQL injections....

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Tom Fischer

Tom Fischer

23/01/2008 22:20:00
Quote Anchor link
Beste phphelpers,
hoe moet je een sql injection uitvoeren in een url,
als je bijvoorbeeld deze link hebt:

http://www.hackthissite.org/missions/realistic/4/products.php?category=1

en je weet dat een tabelnaam email heet en de db heet ook email. Hoe kan je dan alle emailadressen (dus de variabele 'email' in de db) weergeven door middel van een sql injection? Hoe en wat moet je dat dan achter categorie=1 plakken? Union, of select?
Wie kan het mij duidelijk uitleggen hoe het werkt,

Met vriendelijke groet,
Tom


ps:
dit werkte niet:

Http:// ..... ?category = 1 UNION ALL SELECT *,*,* FROM email
Gewijzigd op 01/01/1970 01:00:00 door Tom Fischer
 
PHP hulp

PHP hulp

28/11/2024 21:52:43
 
Frank -

Frank -

23/01/2008 22:26:00
Quote Anchor link
=1 OR 1=1

of

=1' OR 1='1

voor het geval er met quotes in de query wordt gewerkt.

Maar goed, je moet wel heel erg stom zijn om anno 2008 nog steeds niets tegen SQL-injection te doen. Zorg voor 1 goede methode om te escapen en gebruik deze ALTIJD, ook als je denkt dat het niet nodig is. Prepared statements en stored procedures kunnen de boel nog net even iets veiliger maken, maar het begint met veilig escapen.

Ps. SQL-injection met een DELETE of DROP is natuurlijk veel indrukwekkender!
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Wouter K

Wouter K

23/01/2008 22:28:00
Quote Anchor link
@pgfrank: Maar een mysql_real_escape();
moet daar dan je SQL in ? (Insert lala ..).
Want daar kom ik niet aan uit.
 
Joren de Wit

Joren de Wit

23/01/2008 22:30:00
Quote Anchor link
Nee, die functie gebruik je over de variabelen die je wilt beveiligen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$sNaam
= mysql_real_escape_string($_POST['naam']);
$sQuery = "
    SELECT *
    FROM tabel
    WHERE naam = '"
.$sNaam."'
"
;
?>

ps. Zie ook de SQL Beginnershandleiding.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Tom Fischer

Tom Fischer

23/01/2008 22:31:00
Quote Anchor link
Ja dit lijstje ken ik wel:

' or 0=0 --

" or 0=0 --

or 0=0 --

' or 0=0 #

" or 0=0 #

or 0=0 #

' or 'x'='x

" or "x"="x

') or ('x'='x

' or 1=1--

" or 1=1--

or 1=1--

' or a=a--

:P

Maar ik wil graag weten hoe het werkt in een url, als je in de URL balk wat veranderd, hoe moet je dat intypen en gebruiken?
 
Frank -

Frank -

23/01/2008 22:32:00
Quote Anchor link
Nee, daar komen de variabelen in te staan. Voorbeeldje van een update-query met een waarde uit een POST-formulier en een waarde uit de url:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$query
= "
UPDATE
  tabelnaam
SET
  kolom = '"
.mysql_real_escape_string($_POST['veldnaam']."'
WHERE
  id = '"
.mysql_real_escape_string($_GET['id']."';
"
;
?>

Data door de user verstuurd is nooit te vertrouwen!

@Tom: Heb je wel de magic_quotes uitgezet? Die zooi heb je niet nodig, maar je moet dan wel op een andere manier de boel beveiligen. Wil je SQL-injection testen, zul je dit dus uit moeten zetten.

Daarnaast zul jij wel iets moeten uitvoeren wat ook effect heeft op de getoonde data. Met een SELECT en UNION extra data ophalen is leuk en aardig, maar wanneer de resultaten niet worden gefetcht in de PHP-code, zul je dit dus niet op het scherm zien. Ga maar eens klooien met een DELETE of inloggen zonder wachtwoord. Dat is veel leuker!

Ps. Voor FireFox zijn leuke tools te krijgen om data aan te passen in formulieren e.d.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Joren de Wit

Joren de Wit

23/01/2008 22:35:00
Quote Anchor link
Je kunt dmv SQL injectie extra commando's aan de query toevoegen. Je kunt dus wel alle adressen selecteren maar dat betekent nog niet dat je ze ook kunt tonen. Dan moet de PHP code daar ook nog eens geschikt voor zijn!

Het komt erop neer dat je een zodanige string invoert dat je query er bijvoorbeeld zo uit komt te zien:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SELECT *
FROM tabel
WHERE id = 1 OR 1 = 1

Oftewel, alle records worden nu opgehaald. Op deze manier kun je natuurlijk ook de query afsluiten met een ; en tegelijkertijd een tweede query laten uitvoeren. DROP of DELETE queries zijn hier fijne voorbeelden van...

Maar goed, zorg dus altijd dat gebruikers input beveiligd is voordat je deze in een query gebruikt...

ps. @Frank: je mist 2x een ) in je query ;-)
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Tom Fischer

Tom Fischer

23/01/2008 22:37:00
Quote Anchor link
Deze pagina is een test pagina voor leden om te zien of je achter de emailadressen kan komen dmv een sql injectie in de $_GET.
dus: http://www.hackthissite.org/missions/realistic/4/products.php?category=1
en daarachter de sql injectie om alle emailadressen te achterhalen, maar wat is hier dan verkeerd aan:

Http://www.hackthissite.org/missions/realistic/4/products.php?category=1 UNION ALL SELECT *,*,* FROM email
???

gr tom


ps, die plugins heb ik al voor ff zoals firebug, tamper data, en modify headers, maar ik wil weten hoe zo'n url er uit komt te zien voluit getypt.
Gewijzigd op 01/01/1970 01:00:00 door Tom Fischer
 
Frank -

Frank -

23/01/2008 22:39:00
Quote Anchor link
En waarom zou dit script het resultaat van jouw hack moeten gaan fetchen en tonen? Dat zal zelden het geval zijn.

voer een DELETE uit om te zien of je kunt hacken.
 
Tom Fischer

Tom Fischer

23/01/2008 22:41:00
Quote Anchor link
@ pgFrank,
dit script is een script door de site zelf opgesteld, het is een hack site die je alle bugs leert in een website en die hebben het zo aangepast dat als jij die goede code gebruikt dat je dan ziet "mission completed" en de resultaten worden getoond, dat hebben ze zo gemaakt. Maar ik wil weten hoe je het dus in je url verwerkt.
gr tom
 
Joren de Wit

Joren de Wit

23/01/2008 22:44:00
Quote Anchor link
Tom, lees nou mijn post nog eens en ga gewoon wat dingen proberen. Schrijf zelf een kleinscriptje waarin je een gegeven GET variabele echot om te zien hoe een ingevulde waarde eruit komt.
 
Tom Fischer

Tom Fischer

23/01/2008 22:48:00
Quote Anchor link
Dit werkt ja:
http://www.hackthissite.org/missions/realistic/4/products.php?category=1 or 1=1

dat werkt, maar hoe moet je een select etc. gebruiken?
 
Tom Fischer

Tom Fischer

24/01/2008 09:52:00
Quote Anchor link
iemand een voorbeeld? hoe het moet in een url
 
Robert Deiman

Robert Deiman

24/01/2008 10:00:00
Quote Anchor link
OR 1=1;SELECT * FROM table?

Let op de ; ertussen
 
Lissy Pixel

Lissy Pixel

24/01/2008 10:01:00
Quote Anchor link
UHU....wil je een cursus "hoe leer ik hacken?" want dan effies ook jouw naam + adres e.d. zodat je bij mij op de lijst komt met mogelijke "daders" voor als er weer een of ander attack is en er dusdanige schade is dat deze verhaald kan worden door bijv. verzekeraars/banken/overheid.

YOU get MY point???
 
Frank -

Frank -

24/01/2008 10:08:00
Quote Anchor link
@Lissy: SQL-injection is eenvoudig te voorkomen en anno 2008 echt niet meer nodig.

Wanneer jij jouw fiets in de stad niet op slot zet, mag je ook niet klagen wanneer deze na een dagje winkelen is verdwenen. Daar vraag je om en dat is met SQL-injection niet anders. Geen maatregelen getroffen? Ga niet klagen, je vraagt er zelf om.
 
Martijn B

Martijn B

24/01/2008 10:18:00
Quote Anchor link
@Frank:

IK ben zelf geen hacker of cracker.

Maar ik kan mij indenken dat deze mensen een uitdaging nodig hebben om iets te doen.


"Ja, ik heb een server gehackt waar geen firewall op zat"
 
Tom Fischer

Tom Fischer

24/01/2008 10:31:00
Quote Anchor link
Het is ook niet de bedoeling om een hacker o.i.d te worden maar ik wil gewoon weten hoe het werkt. Dus hoe xss werkt en sql injections. En ik wil alleen weten wat ik in de URL moet zetten:

http://www.hackthissite.org/missions/realistic/4/products.php?category=1

Het is een website die van die lessen aanbiedt zodat je ziet waar beveiligingslekken zitten.

Ik weet dat de db email heet en dat er een tabel email is en een tabel category. Maar hoe kan ik alle emailadressen zien? Er zit express een sql injectiefout in de pagina, en die moet je zien te vinden maar ik wil weten hoe je het moet gebruiken:

http://www.hackthissite.org/missions/realistic/4/products.php?category=1 OR 1=1;SELECT * FROM email

Maar geef je die dan ook weer? want dit werkt niet zoals hierboven

zoiets?
Gewijzigd op 01/01/1970 01:00:00 door Tom Fischer
 
Robert Deiman

Robert Deiman

24/01/2008 10:35:00
Quote Anchor link
Probeer het zou ik zeggen.. :)
 
Tom Fischer

Tom Fischer

24/01/2008 10:39:00
Quote Anchor link
Zoals ik al zei dit:

http://www.hackthissite.org/missions/realistic/4/products.php?category=1 OR 1=1;SELECT * FROM email

Werkt niet.

Maar ik test wel even verder...
Gewijzigd op 01/01/1970 01:00:00 door Tom Fischer
 
Robert Deiman

Robert Deiman

24/01/2008 10:55:00
Quote Anchor link
tom schreef op 24.01.2008 10:39:
Zoals ik al zij dit:

http://www.hackthissite.org/missions/realistic/4/products.php?category=1 OR 1=1;SELECT * FROM email

Werkt niet.


Maar dat het niet werkte stond er nog niet toen ik reageerde ;) Vandaar mijn opmerking.. Maar als het niet werkt.. Hmm..
Lees ook dit eens door:
Klik

Klik
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.