» »

sql injection [PHP + mysql]

sql injection [PHP + mysql]

Bojevnik ::

Za seminorsko nalogo moram demonstrirati sql injection napad, ki pa mi nikakor ne uspe.
Imamo preprost login obrazec. Ki lahko poslje podatke preko "post" ali preko "get". spremnljivka $post pove na kakšen način pošljam.

Toda nikakor mi pa ne uspe izvesti napada.
Uporabljam Apache 2.2, PHP 5.2.5 in mySQL 5.1


Tukaj je koda:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<h1>test</h1>
<?php
$post=isset($_POST['id']);
if($post) {
    $id = $_POST['id'];
}
if(!$post) {
    $id = $_GET['id'];
}

$con = mysql_connect("localhost","username","geslo");
if(!$con) {
    die("could not connect". mysql_error());
}

mysql_select_db("demonstracija",$con) or die(mysql_error());

$result = mysql_query("SELECT password FROM user WHERE id ='$id'");
if (!$result) {
    die('Invalid query: ' . mysql_error());
}
echo "result je :".$result;
mysql_close($con);
?>
</body>
</html>


Ima kdo kakšno idejo zakaj napadi ne uspevajo?
  • spremenilo: Bojevnik ()

KoMar- ::

Prilimaj še parameter, ki ga hočeš poturit v query...

techfreak :) ::

koda.php?id=' OR 1 = 1 bi moralo delovati ...

Zgodovina sprememb…

Ziga Dolhar ::

Je možno, da ima kako magic_quotes sranje vklopljeno na strežniku?

(Ne vem, se že zelo dolgo nisem ukvarjal s programiranjem ...)
https://dolhar.si/

denial ::

Hitri SQLi test:

koda.php?id='
-> here be syntax errors
koda.php?id=''
-> here be no syntax errors

Predvidevam da imaš zadeve poštimane (db 'demonstracija' exist, tabela 'user' exist itd.)
SELECT finger FROM hand WHERE id=3;

Zgodovina sprememb…

  • spremenil: denial ()

schtr4jh ::

$post=isset($_POST['id']);
if($post) {
 $id = $_POST['id'];
}
if(!$post) {
 $id = $_GET['id'];
}


to lahko zamenjaš z
$id = $_REQUEST['id'];

in izpostaviš še nevarnost pri uporabi $_REQUEST namesto $_POST ali $_GET

Bojevnik ::

nastavitve php-ja ne bo smele bit problem, imam nastavljeno safe_mode = off , magic_quotes_gpc = off

ene par querijev ki sem jih uporabil :
test.php?id=5' //(vrne napako kot bi jo moralo)
test.php?id=5 union select 1--  //(bi moralo vrniti napako, toda jo ne)
test.php?id=5 order by 12/*  //(stevilo stolpcev v bazi je samo 3, tako da bi moralo vržt ven napako, toda mi jo ne).
test.php?id=1234âEUR? //(ne vrne napaka, čeprav bi jo moralo)
test.php?id=5';delete from user;# //(vrne napako in ne zbriše zapisov, kot bi moralo)

iggy ::

Verjetno bo lažje če si najdeš en tutorial o mysql injectionih, pa si malo prekopiraš primere.
Hey, you're fat!

techfreak :) ::

Kaj ti pa echo $_REQUEST['id'] vrne?

overlord_tm ::

For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.

For other type of SQL statements, INSERT, UPDATE, DELETE, DROP, etc, mysql_query() returns TRUE on success or FALSE on error.

The returned result resource should be passed to mysql_fetch_array(), and other functions for dealing with result tables, to access the returned data.


To kar ti prikazujes je torej samo resource ki ga vrne baza. Vsaj vcasih je bilo tako, pa pomoje da je v PHP5 se vedno isto. Torej ce hoces videti kaj ti je query vrnil rabis se mysql_fetch_array ipd...



Drgac pa, ne dela ti zarad narekovajev ... ko vrines noter nekaj za id, ti ostane tist narekovaj, ki je prej zakljuceval id.

test.php?id=1' OR 'a'='a

Bojevnik ::

Hvala, ja narekovaji so bili problem.

Lion29 ::

sicer pa za debug

namesto

$result = mysql_query("SELECT password FROM user WHERE id ='$id'");


uporabi drugic:


$query = "SELECT password FROM user WHERE id='$id'";
echo $query;
$result = mysql_query($query);


Tak bos videl dejansko query

sicer si pa ze ugotovil, da so navednice ble krive
Founder and CTO @ Article-Factory.ai


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

HTML in SQL pomoč (strani: 1 2 )

Oddelek: Programiranje
517680 (6558) def0r
»

Branje slik jpg iz MySQL z PHP

Oddelek: Izdelava spletišč
152418 (2036) a-ptuj1
»

[JS / PHP] miniajax post

Oddelek: Programiranje
131038 (772) cobrica
»

MySQL Query Vprašanje

Oddelek: Izdelava spletišč
153228 (2993) overlord_tm
»

[php-seje]Ali kdo pozna rešitev!

Oddelek: Programiranje
101390 (1216) diovc

Več podobnih tem