Toon posts:

PHP realtime sql update

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Goedemorgen,

Ik zal snel even mijn situatie even schetsen.
Wij moeten op school een spreking doen. En heb het ongelukkige onderwerp getrokken SQL injecties.

Maar wij moeten ook gebruiken van documentatie. Dus heb ik liggen denken om een form op te maken. met daaronder ook een display van de database. Maar ik weet dus niet hoe ik een real time update doe van de database. Injectie parsen doordat form en rechtstreeks weergeven in de db aan de onderkant van men page.

Ik begrijp dat jullie mij geen volledig antwoord gaan geven. Maar zou iemand mij opweg kunnen zetten? Bij het creeren van deze webpage!

P.s zwakheden zijn ook altijd welkom.

Met vriendelijke groet

Acties:
  • 0 Henk 'm!

  • edeboeck
  • Registratie: Maart 2005
  • Laatst online: 11-09 13:47

edeboeck

mie noow noooothing ...

"Realtime" update van DB? Je bedoelt dus gewoon een SQL-statement in een form ingeven en dat uitvoeren?
Wat bedoel je in godsnaam met "Maar wij moeten ook gebruiken van documentatie."... is dit het gebruiken van de documentatie van een product? Het zelf maken van documentatie?
Heb je eigenlijk al eens gezocht op SQL injection (o.a. op SlideShare)?
Kortom (weer eens?): wat heb je zelf al gedaan?
Tip: ik hoop wel dat je die webpagina niet online gooit :+

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wat ik al heb gedaan is het creeren van de HTML en css code! Heb ook al een form waarmee ik sql statements kan invoeren. Wel me leraar heeft het liefste dat we zelf wat gaan puzzelen voor documentatie.

Dus ik veronderstel dat hij het maken bedoeld.

Het begrip sql injecteren is me allemaal duidelijk. Maar zit gewoon ja vast op het creeren vanmijn documentatie idee.

Maar echter zit ik vast op: Hoe zorg ik er nu voor dat die men query ook gaat displayen in een ander compartiment snap je zoals de SQL try it van W3schools bv.

En btw die webpage online smijten. Zeker niet! Dat is het laatste waar ik aan denk. Ik wou het eerder doen met me Apache configuratie; Intern op me laptop dus

[ Voor 25% gewijzigd door Verwijderd op 03-12-2013 09:12 ]


Acties:
  • 0 Henk 'm!

  • DennusB
  • Registratie: Mei 2006
  • Niet online
Verwijderd schreef op dinsdag 03 december 2013 @ 09:10:
Wat ik al heb gedaan is het creeren van de HTML en css code! Heb ook al een form waarmee ik sql statements kan invoeren. Wel me leraar heeft het liefste dat we zelf wat gaan puzzelen voor documentatie.

Dus ik veronderstel dat hij het maken bedoeld.

Maar echter zit ik vast op: Hoe zorg ik er nu voor dat die men query ook gaat displayen in een ander compartiment snap je zoals de SQL try it van W3schools bv.

En btw die webpage online smijten. Zeker niet! Dat is het laatste waar ik aan denk. Ik wou het eerder doen met me Apache configuratie; Intern op me laptop dus
Je kan toch gewoon $query = "hierjequery"; doen en die zowel echo'en als uitvoeren met mysql_query?

Owner of DBIT Consultancy | DJ BassBrewer


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
DennusB schreef op dinsdag 03 december 2013 @ 09:11:
[...]


Je kan toch gewoon $query = "hierjequery"; doen en die zowel echo'en als uitvoeren met mysql_query?
Maar je variable gaat die niet kwijt naar de eerste parsing. aangezien dat form zijn action in een aparte file staat. waar word afgesloten met Mysqli_close($Con);

Acties:
  • 0 Henk 'm!

  • DennusB
  • Registratie: Mei 2006
  • Niet online
Verwijderd schreef op dinsdag 03 december 2013 @ 09:16:
[...]


Maar je variable gaat die niet kwijt naar de eerste parsing. aangezien dat form zijn action in een aparte file staat. waar word afgesloten met Mysqli_close($Con);
Heh? Huh wat? Je post toch gewoon je form? Post hem lekker naar dezelfde pagina toe en laat hem daar uitvoeren en echo'en.....
Heb je überhaupt ervaring met PHP btw?

Owner of DBIT Consultancy | DJ BassBrewer


Acties:
  • 0 Henk 'm!

  • Miyamoto
  • Registratie: Februari 2009
  • Laatst online: 04:11
Op wat voor school zit je / om wat voor niveau gaat het?
Maak het je zelf niet moeilijker dan nodig, zeker niet als je niet bekend bent met het onderwerp.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op dinsdag 03 december 2013 @ 09:16:
[...]


Maar je variable gaat die niet kwijt naar de eerste parsing. aangezien dat form zijn action in een aparte file staat. waar word afgesloten met Mysqli_close($Con);
Doe eens gek en probeer 't eens :?

code:
1
2
3
4
5
6
7
$myquery = $POST['query'];

$mydb->open();
$result = $mydb->execute($myquery);
$mydb->close();

echo html_encode($myquery);

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Informatica, 2de kans onderwijs. is mijn richting. en echt bekend met PHP ben ik niet maar, ik ben het wel heel stilaan aan het leren.

Acties:
  • 0 Henk 'm!

  • kwaakvaak_v2
  • Registratie: Juni 2009
  • Laatst online: 02-06 12:29
dan zou ik de presentatie gewoon lekker in powerpoint doen en niet lopen kutten met een live demo ;)

Driving a cadillac in a fool's parade.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
kwaakvaak_v2 schreef op dinsdag 03 december 2013 @ 10:11:
dan zou ik de presentatie gewoon lekker in powerpoint doen en niet lopen kutten met een live demo ;)
Ben ik akkoord mee maar een live demo kan ook leuk lijken niet?

Acties:
  • 0 Henk 'm!

  • kwaakvaak_v2
  • Registratie: Juni 2009
  • Laatst online: 02-06 12:29
ja als je idd weet wat je doet wel, maar vaak gaan live demo's mis omdat de omstandigheden net niet zijn als je had bedacht.

Heb denk ik ietst te vaak op conferenties naar tegen stotterende bovenkanten van een hoofd zitten kijken omdat tijdens de live demo de laptop net niet deed wat moest, de internet verbinding eruit lag, de presentator te druk was met het live fixen van een niet relevante bug etc. Voor de persoon die presenteert misschien wel boeiend omdat het volledig in zijn wereld zit, maar voor de zaal/klas met mensen is het ongeveer net zo boeiend als het kijken naar gras dat groeit.

Driving a cadillac in a fool's parade.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
kwaakvaak_v2 schreef op dinsdag 03 december 2013 @ 10:55:
ja als je idd weet wat je doet wel, maar vaak gaan live demo's mis omdat de omstandigheden net niet zijn als je had bedacht.

Heb denk ik ietst te vaak op conferenties naar tegen stotterende bovenkanten van een hoofd zitten kijken omdat tijdens de live demo de laptop net niet deed wat moest, de internet verbinding eruit lag, de presentator te druk was met het live fixen van een niet relevante bug etc. Voor de persoon die presenteert misschien wel boeiend omdat het volledig in zijn wereld zit, maar voor de zaal/klas met mensen is het ongeveer net zo boeiend als het kijken naar gras dat groeit.
Touche! daar heb je over de hele lijn gelijk in! maar toch ga ik het zuiver eens voor mezelf proberen denk ik

Acties:
  • 0 Henk 'm!

  • Miyamoto
  • Registratie: Februari 2009
  • Laatst online: 04:11
kwaakvaak_v2 schreef op dinsdag 03 december 2013 @ 10:11:
dan zou ik de presentatie gewoon lekker in powerpoint doen en niet lopen kutten met een live demo ;)
Inderdaad. Concentreer je op wat je wel weet en probeer daar een verhaal van te maken.
Die demo boeit echt helemaal niemand. Het is vrij low-tech, zeker voor een Informatica opleiding waarbij misschien 1/3 van je klasgenoten een stuk verder is met SQL queries.
Je kunt de queries ook prima uitleggen dmv tabellen in Powerpoint, laat zien wat er veranderd na het uitvoeren van een query. Veel duidelijker dan gerommel/gestuntel met live data.

@Janoz: Klopt helemaal. Ik had er overheen gelezen dat het specifiek over (sql) injecties ging.

[ Voor 6% gewijzigd door Miyamoto op 03-12-2013 15:37 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Voor het bespreken van SQL-injecties is de inhoud en form van de tabellen helemaal niet relevant. Het gaat om de inhoud van de query die naar de database gaat. In een powerpoint moet je heel simpel kunnen laten zien hoe een query onbedoeld kan worden aangepast.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dan kje voor de info!

[ Voor 103% gewijzigd door Verwijderd op 03-12-2013 18:00 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb me dia voorstelling af maar nu probeer ik echter ook een live demo. (zuiver voor mezelf). Maar nu is mijn vraag ik snap niet hoe ik via mijn form een query invoer en terwijl ook parse op men page. Iemand die mij kan helpen?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op dinsdag 03 december 2013 @ 20:09:
Ik heb me dia voorstelling af maar nu probeer ik echter ook een live demo. (zuiver voor mezelf). Maar nu is mijn vraag ik snap niet hoe ik via mijn form een query invoer en terwijl ook parse op men page. Iemand die mij kan helpen?
Wat is er niet duidelijk aan RobIII in "PHP realtime sql update" :?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
wel dat is georienteerde php niet? ik heb daar dus voorlopig nog geen ervaring mee!

mijn excuses daarvoor

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
echter zit ook met deze code te klooien

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// query.php

<?php
$con=mysqli_connect("localhost","root","root","$_POST[database]");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

// Create table
$sql= $_POST['query'];

// Execute query
if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }
echo "Query succesfully executed!";
?>

<form action="query.php" method="POST">
                <div class="col-md-3">
                  <input type="text" name="database" placeholder="Database" class="form-control">
                </div>
                <div class="col-md-10">
                  <div style="margin-bottom: 5px" class=" form-top-padding btn-group">
                    <button title="" class="btn btn-default btn-xs"><span class="glyphicon glyphicon-plus"></span></button>
                    <button title="show tables;" class="btn btn-default btn-xs"><span class="glyphicon glyphicon-list"></span></button>
                    <button title="" class="btn btn-default btn-xs"><span class="glyphicon glyphicon-trash"></span></button>
                    <button title="drop" class="btn btn-default btn-xs"><span class="glyphicon glyphicon-edit"></span></button>
                    <button title="" class="btn btn-default btn-xs"><span class="glyphicon glyphicon-search"></span></button>
                  </div>
                  <textarea name="query" placeholder="Insert your SQL Query here." class=" form-control" rows="3"></textarea>
                </div>
                <button class="btn btn-success" type="submit">
                  <span class="glyphicon glyphicon-flash"></span> Go!
                </button>
                <button class="btn btn-danger" value="reset">
                  <span class="glyphicon glyphicon-warning-sign"></span> Reset!
                </button>
              </form>


Wat maakt mijn queries worden perfect uitgevoerd maar blijfvast hangen op query.php. En als ik namelijk terug naar index.php ga word namelijk ook de query niet gedisplayed in de panel die hiervoor bedoel is op index.php

Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Wat mij al gelukt is op bepaalde websites:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if (isset($_POST['login'])) {
    $db = new mysqli("localhost","root","root","database");
    $result = $db->query("SELECT * FROM users WHERE name='{$_POST['login']['name']}' AND pass='{$_POST['login']['pass]}'");
    print_r($result->fetch_assoc());
}
?>

<form action="" method="post">
<input name="login[name]" value="' OR 1"/>
<input name="login[pass]" value="' OR 1"/>
<button>login</button>
</form>


Oftewel: ik bleek gewoon ingelogged te zijn als de eerste gebruiker (meestal een admin)

[ Voor 8% gewijzigd door DJMaze op 04-12-2013 01:50 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • Miyamoto
  • Registratie: Februari 2009
  • Laatst online: 04:11
Verwijderd schreef op dinsdag 03 december 2013 @ 22:32:
echter zit ook met deze code te klooien
Je kunt letterlijk de code van RobIII kopiëren.
In je eigen code mist op regel 19 een 's' O-)

Verder geen idee wat je wilt, hoe wil je nu met dat stukje code een SQL injectie aantonen?
Schrijf eerst eens in pseudo-code op wat je wilt bereiken, dan wordt het voor jezelf misschien ook duidelijker.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
root wat ik eigen wil aantonen is ik voer in dat form sql statements in en in een panel daaronder word direct weergegeven wat hij doet

en waar plaats jij dan die code. Ik zet hem in de panel waar ik de query wil displayen maar daar doet hij dus niets....

[ Voor 31% gewijzigd door Verwijderd op 04-12-2013 10:08 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Als je dat wilt laten zien kun je veel beter een of andere administratie tool gebruiken zoals de MySQL Workbench. En als je het perse in de browser wilt doen, gebruik dan phpmyadmin oid.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • PsychoMantis_NL
  • Registratie: Juli 2011
  • Laatst online: 18:55

PsychoMantis_NL

PSN: PsychoMantis_NL

Is iets simpels als zo iets geen optie?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
// Optie 1
$standaardQuery = "SELECT * FROM gebruikers WHERE id = '1'";

// Optie 2 - Triggert notice indien formulier nog niet is gesubmit
//           Dit kun je zelf wel afvangen/checken
$standaardQuery = "SELECT * FROM gebruikers WHERE id = '".$_POST['sqlInjection']."'";
?>

<form action="" method="post">
    <h4>INPUT</h4>
    <p>Standaard query: <pre><?php echo $standaardQuery; ?></pre></p>
    <p>Geef extra commando's in: <input type="text" name="sqlInjection" /></p>
    <p><input type="submit" name="submit" value="Corrupt database!" /></p>
</form>

<div>
    <h4>OUTPUT</h4>
    <?php
    if($_SERVER['REQUEST_METHOD'] == 'POST')
    {
        // Eerst query echo'en
        echo 'De volgende quiery wordt uitgevoerd: ' . $standaardQuery . '<br />';
        // Eerst query zonder aanvullend commando uitvoeren en data tonen
        $q = mysqli_query($con , $standaardQuery);
        while($results = mysqli_fetch_assoc($q))
        {
            // toon resultaten
        }
        echo '<br /><br />';
        
        // Query uitvoeren met aanvullende data
        
        // Optie 1
        echo 'De volgende query wordt uitgevoerd: ' . $standaardQuery . $_POST['sqlInjection'];
        
        // optie 2
        echo 'De volgende query wordt uitgevoerd: '. $standaardQuery;
        
        // resultaat van query tonen
        $q = mysqli_query($con , $standaardQuery);
        while($results = mysqli_fetch_assoc($q))
        {
            // toon resultaten
        }
        
    }
    else
    {
        echo 'Formulier nog niet gesubmit';
    }
    ?>
</div>


Dus, zoals al aangegeven, eerst je (requliere) query tonen en uitvoeren, daarna de corrupte uitvoeren en echo'en... realtime updaten kan natuurlijk ook, dan hang je er een AJAX request achter, maar zoals al aangegeven, dat zou ik lekker via phpmyadmin doen...

Schrijf een query uit op papier, in dit geval (bij voorbeeld 2)
"SELECT * FROM gebruikers WHERE id = '".$_POST['sqlInjection']."'";


Voer die vervolgens in in phpmyadmin, waarbij je de post variabele vervangt door een waarde die je verwacht bijvoorbeeld:
id = 25

Vervolgens voer je diezelfde query nogmaals uit met corrupte data, iets in de trend van:
id = 25 or 1 = 1


offtopic:
Pin me niet vast op de sqli_* notatie, m'n php is wat dat betreft wat roestig, maar het gaat om de opzet :p

PsychoMantis_NL @ Battlefield || Red Dead Redemption || GTA V


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PsychoMantis_NL schreef op woensdag 04 december 2013 @ 11:00:
Is iets simpels als zo iets geen optie?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
// Optie 1
$standaardQuery = "SELECT * FROM gebruikers WHERE id = '1'";

// Optie 2 - Triggert notice indien formulier nog niet is gesubmit
//           Dit kun je zelf wel afvangen/checken
$standaardQuery = "SELECT * FROM gebruikers WHERE id = '".$_POST['sqlInjection']."'";
?>

<form action="" method="post">
    <h4>INPUT</h4>
    <p>Standaard query: <pre><?php echo $standaardQuery; ?></pre></p>
    <p>Geef extra commando's in: <input type="text" name="sqlInjection" /></p>
    <p><input type="submit" name="submit" value="Corrupt database!" /></p>
</form>

<div>
    <h4>OUTPUT</h4>
    <?php
    if($_SERVER['REQUEST_METHOD'] == 'POST')
    {
        // Eerst query echo'en
        echo 'De volgende quiery wordt uitgevoerd: ' . $standaardQuery . '<br />';
        // Eerst query zonder aanvullend commando uitvoeren en data tonen
        $q = mysqli_query($con , $standaardQuery);
        while($results = mysqli_fetch_assoc($q))
        {
            // toon resultaten
        }
        echo '<br /><br />';
        
        // Query uitvoeren met aanvullende data
        
        // Optie 1
        echo 'De volgende query wordt uitgevoerd: ' . $standaardQuery . $_POST['sqlInjection'];
        
        // optie 2
        echo 'De volgende query wordt uitgevoerd: '. $standaardQuery;
        
        // resultaat van query tonen
        $q = mysqli_query($con , $standaardQuery);
        while($results = mysqli_fetch_assoc($q))
        {
            // toon resultaten
        }
        
    }
    else
    {
        echo 'Formulier nog niet gesubmit';
    }
    ?>
</div>


Dus, zoals al aangegeven, eerst je (requliere) query tonen en uitvoeren, daarna de corrupte uitvoeren en echo'en... realtime updaten kan natuurlijk ook, dan hang je er een AJAX request achter, maar zoals al aangegeven, dat zou ik lekker via phpmyadmin doen...

Schrijf een query uit op papier, in dit geval (bij voorbeeld 2)
"SELECT * FROM gebruikers WHERE id = '".$_POST['sqlInjection']."'";


Voer die vervolgens in in phpmyadmin, waarbij je de post variabele vervangt door een waarde die je verwacht bijvoorbeeld:
id = 25

Vervolgens voer je diezelfde query nogmaals uit met corrupte data, iets in de trend van:
id = 25 or 1 = 1


offtopic:
Pin me niet vast op de sqli_* notatie, m'n php is wat dat betreft wat roestig, maar het gaat om de opzet :p
er zit een foutje op lijn 15 :p

Acties:
  • 0 Henk 'm!

  • PsychoMantis_NL
  • Registratie: Juli 2011
  • Laatst online: 18:55

PsychoMantis_NL

PSN: PsychoMantis_NL

Welke fout zou dat dan moeten zijn? Ik krijg hier alleen een notice dat $sqlInjection niet bestaat voor het posten van het formulier, en m'n queries geven notices dat $con niet bestaat (logisch aangezien ik nergens een connectie open/definieer).

Lijn 15 voor het parsen geeft:
</form>


Lijn 15 na het parsen, maar voor het posten bestaat hier niet (indien ik de html/head/body tags etc. verwijder), en na het submitten geeft die regel (hier) een:
<br />
:p

PsychoMantis_NL @ Battlefield || Red Dead Redemption || GTA V


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PsychoMantis_NL schreef op woensdag 04 december 2013 @ 13:25:
Welke fout zou dat dan moeten zijn? Ik krijg hier alleen een notice dat $sqlInjection niet bestaat voor het posten van het formulier, en m'n queries geven notices dat $con niet bestaat (logisch aangezien ik nergens een connectie open/definieer).

Lijn 15 voor het parsen geeft:
</form>


Lijn 15 na het parsen, maar voor het posten bestaat hier niet (indien ik de html/head/body tags etc. verwijder), en na het submitten geeft die regel (hier) een:
<br />
:p
touché my bad!
Pagina: 1