Strona 1 z 3 123 OstatniOstatni
Pokaż wyniki od 1 do 10 z 25

Wątek: Krytyka i wtykanie błędów

  1. #1
    Grupa MmoCenter Awatar Kiri
    Dołączył
    Sep 2007
    Posty
    1,741

    Exclamation Krytyka i wtykanie błędów

    Krótko i na temat czyli wtykanie błędów i bugów(!), pomijam jednak takie duperele jak niepoprawne ciapkowanie czy dublowanie zmiennych...

    Pod odstrzał leci wersja 1.13 by Meares bo widzę że to najnowsza z dostępnych wersji race.

    Czerwone == Krytyczne



    admin.php:

    Kod php:
    if ($pokaz == dod_kas) { 
    +
    if (
    $step == dodana) {
    +
    if (
    $pokaz == zab_kas) {
    +
    itd... 
    Co to jest ?! Register_globals ?! Tego się w dzisiejszych czasach nie używa, ponadto jest NIEBEZPIECZNE(!)

    No i nie wspomnę że się odwołujemy do... stałych (sic!)

    Zastanawiam się czy to w ogóle działa....

    Kod php:
    $dod_kas str_replace("--",""$dod_kas); 
    To za MA?O by filtrować dane (nawet jak to jest panel ADMINA), najlepiej i najprościej to "piłować" wartości cyfrowe przez ctype_digit...

    O dziwo, bo ostatni if:

    Kod php:
    if($_GET['pokaz'] == "graczy"){ 
    Jest poprawnie napisany.............




    bank.php:

    Kod php:
            if($_POST['wloz'] < 0){
                
    $kara mysql_query("UPDATE users SET kasa=0 WHERE user='$user' ");
                echo 
    "Wykorzystywanie błędów w kodzie jest zabronione. Za karę musisz zapłącić tyle kasy ile masz obecnie.";
            } 
    Bez komentarza... + "zapłącić"

    $_POST['wloz'] - brak sprawdzania D?UGO??CI ciągu, a przy bardzo długich lubi to świrować w postaci nieprawidłowych przekształceń czy przeliczeń (takowy przypadek był w vallheru...)



    Kod php:
                $jest mysql_fetch_array(mysql_query("SELECT bank FROM users WHERE user='$user' "));
                
    $jest2 $jest[0];
                
    $wloz $_POST['wloz'];
                
    $wloz2 $wloz $jest2;
                
    $wloz3 mysql_query("UPDATE users SET bank='$wloz2' WHERE user='$user' "); 
    Nie wie się że SQL liczyć potrafi...? Ponadto $_POST['wloz'] to int więc ciapkować nie trzeba...

    Kod php:
             $wloz3 mysql_query("UPDATE users SET bank=bank+$_POST['wloz'] WHERE user='$user' "); 
    Oczywiście w przypadku "wyjmij" niemal to samo...

    car.php do car20.php


    Trudno to złączyć w jedno i skorzystać z $_GET ? o0

    gora.php
    Kod php:
    @session_start(); 
    Po co tam @ ? Przecież mechanizm sesji tak czy siak wystartować MUSIMY....

    Kod php:
    $_SESSION['komunikat'] = "Do poprawnego działania skryptu wymagana jest przeglądarka Mozilla Firefox!"
    Znów bez komentarza...


    hotel.php


    Kod php:
            $kasa4 mysql_query("UPDATE users SET kasa='$kasa3' WHERE user='$user' ");
            
    $zmeczenie mysql_query("UPDATE users SET zmeczenie=0 WHERE user='$user' "); 
    Dwa update'y do tej samej tabeli i z tą samą krauzulą where...

    izba.php:


    Kod php:
            $kasa3 mysql_query("UPDATE users SET kasa='$kasa2' WHERE user='$user' ");
            
    $kasa4 mysql_query("UPDATE users SET promile=0 "); 
    Ciekawe to ostatnie query które ustawia WSZYSTKIM graczom promile na 0... chyba że ktoś zjadł tam WHERE to wtedy będzie przypadek jak wyżej.

    karczma.php:

    Kod php:
     if(isSet($_POST['tresc']) && isSet($_POST['wyslij']) && !empty($_POST['tresc'])){
        
    $tekst $_POST['tresc'];
        
    mysql_query("INSERT INTO karczma SET user='$user', text='$tekst'");
        
    header("Location: karczma.php");

    BRAK FILTROWANIA DANYCH $_POST['tresc'], SQL injection na pełnej lini(!!!)

    kontakt.php:

    Sztywne ustawienie emaila, można zapomnieć o zmianie + możliwe zaSPAMienie...

    install.php:

    Kod php:
    @mysql_query('SET NAMES latin2');
    @
    mysql_query('SET collation_connection = latin2_general_ci');
    @
    mysql_query('SET CHARACTER SET latin2');
    @
    mysql_query('set character_set_connection=latin2');
    @
    mysql_query('set character_set_client=latin2');
    @
    mysql_query('set character_set_database=latin2');
    @
    mysql_query('set character_set_results=latin2');
    @
    mysql_query('set character_set_server=latin2');
    @
    mysql_query('set collation_database=latin2_general_ci');
    @
    mysql_query('set collation_server=latin2_general_ci'); 
    samo

    mysql_query('SET NAMES latin2');

    jest wystarczające bo to Sź zapytania do bazy danych(!)

    login.php:

    BRAK filtrowania $_POST['user'], sytuacja podobna co w karczma.php - Krytyczne SQL injection

    nowy_user.php:

    To samo co wyżej - BRAK filtrowania danych z $_POST["user"], $_POST["email"], $_POST["imie"], $_POST["miasto"], $_POST["gg"]

    Szczególnie $_POST["user"] bo jak trafi coś "spreparowanego" bo bazy to potem mogą być "atakowane" wszelanie zapytania które opierają się na danej wyciągniętej z pola user(!)

    pmenu.php:


    Kod php:
    Witaj: <?php echo $_SESSION['zalogowany'?><br>
    Kasa: <?php echo str_replace("."","$row[0]) ?> zł <?php echo $kup ?><br>
    Zmęczenie: <?php echo substr($zmeczenie[0],0,-3?> %<br>
    <?php echo str_replace("."","$promile?><br>
    <?php echo "<img src=\"http://graj.sex.pl/race" $miniaturka[0] . "\">"?><br><br>
    po co tyle razy wchodzić i wychodzić zphp ? Marnowanie czasu serwera, a można to wszystko władować w jedno echo...

    polskie_znaki.php: - WTF ?!

    profil.php:

    BRAK filtrowania $_GET['user'] - SQL inj.

    pvp.php:

    Cała armia zmiennych...

    rejestracja.php:

    PSEUDO-filtrowanie przez JS, BRAK ze strony serwera, zagrożenie - wspomniane przy nowy_user.php...


    samochodzy.php:

    ?OJEZU........

    silnik.php:

    Kod php:
    $kupil mysql_query("UPDATE users SET silnik='$silniklv' WHERE user='$user'");
    $new_kasa $all[0] - $silnik[3];
    $update mysql_query("UPDATE users SET kasa='$new_kasa', vmax='$vmax4', do100='$do1004' WHERE user='$user' "); 
    i to też można połączyć...

    stacja_paliw.php:

    Kod php:
    $kaska mysql_fetch_array(mysql_query("SELECT kasa FROM users WHERE user='$user'")); 
    Po co to walimy jak już mamy forse wyciągniętą wcześniej? ($kasa)

    team.php:

    Kod php:
    $team mysql_fetch_array(mysql_query("SELECT team FROM users WHERE user='$user'"));
    $kasa mysql_fetch_array(mysql_query("SELECT kasa FROM users WHERE user='$user'")); 
    kolejny przypadek gdzie można złączyć w jedno...


    Kod php:
                $id addslashes($_GET['id']);
                
    $team_inf2 mysql_fetch_assoc(mysql_query("SELECT * FROM teams WHERE id='".$id."'")); 
    Niedostateczne $_GET['id'] filtrowanie - SQL inj

    Kod php:
                    $team_name addslashes($_POST['team_name']);
                    
    $team_tag addslashes($_POST['team_tag']);
                    
    $num1 mysql_num_rows(mysql_query("SELECT id FROM teams WHERE name='".$team_name."'"));
                    if (
    $num1 == 0) {
                        
    $num2 mysql_num_rows(mysql_query("SELECT id FROM teams WHERE tag='".$team_tag."'"));
                        if (
    $num2 == 0) {
                            
    mysql_query("INSERT INTO teams (name, tag, chief) VALUES ('$team_name', '$team_tag', '$user')") or die (mysql_error()); 
    Kolejne niedostateczne filtrowanie....

    waarsztat.php:

    Wystarczył by jakiś wzór, lub tablica i skróciło by się ten kod o 75%...

    work.php:

    Kod php:
    $work mysql_fetch_array(mysql_query("SELECT pracuje_do FROM users WHERE user='$user'"));
    $czas mktime();
    $godzin mysql_fetch_array(mysql_query("SELECT godzin FROM users WHERE user='$user'")); 
    Znów to samo, dwa zapytania do tej samej tabeli z tym samym WHERE...


    Ponadto brak sprawdzania długości $_POST['time'].

    wyscig.php:

    Kod php:
    $all mysql_fetch_row(mysql_query("SELECT kasa, vmax, bak, respekt, promile, zmeczenie, do100 FROM users WHERE user='$user'"));
    $czas_ostatni mysql_fetch_array(mysql_query("SELECT ostatni_wyscig FROM users WHERE user='$user'")); 
    Kolejny raz to samo, dwa zapytania do tej samej tabeli z tym samym WHERE... (od tej pory będę kopiować tę informację bo szkoda pisać...)

    Niedostateczne $_POST['race'] filtrowanie - SQL inj

    yes.php:

    Kolejny raz to samo, dwa zapytania do tej samej tabeli z tym samym WHERE, ale tym razem dwukrotnie (SELECT, a potem UPDATE)

    zmiana_avatar.php:

    BRAK sprawdzania "prawdziwości" obrazka, oraz wielkości, ktoś może wrzucić jakiegoś "grzmota" i potem to zeżre ogromne ilosci transferu...

    zmiana_email.php + zmiana_gg.php + zmiana_imie.php + zmiana_miasto.php

    BRAK filtrowania $_POST['new_email'], $_POST['new_gg'], $_POST['new_imie'] i $_POST['new_miasto'] - SQL inj...

    W folderach gdzie są grafiki są ukryte i systemowe pliki Thumbs.db (bazy miniatur tworzone przez systemy Windows XP i wyższe)



    Folder team:

    admin.php:

    Kod php:
        $option addslashes($_GET['option']);
        include(
    "admin/".$option.".php"); 
    addslashes na coś co leci do includa ?!

    http://us3.php.net/manual/en/function.addslashes.php

    pisze jak byk - "Returns a string with backslashes before characters that need to be quoted in database queries etc"


    chat.php:


    identyczna sytuacja co przy karczma.php(!)



    donate.php:

    Kod php:
        $cash addslashes($_POST['cash']);
        
    $new_cash $team_inf1['cash'] + $cash;
        
    $p mysql_fetch_array(mysql_query("SELECT kasa FROM users WHERE user='".$user."'"));
        if (
    $cash 0) {
            if (
    $p[0] >= $cash) {
                
    $new_kasa $p[0] - $cash;
                
    mysql_query("UPDATE teams SET cash='".$new_cash."' WHERE id='".$team_inf1['id']."'") or die (mysql_error());
                
    mysql_query("UPDATE users SET kasa='".$new_kasa."' WHERE user='".$user."'") or die (mysql_error());
                echo 
    "Kasa została wpłacona.";
            }
        } else {
            echo 
    "Nic z tego żartownisiu!";
        } 


    Znów TYLKO addslashes i to w dodatku na wartość cyfrową. Ponadto BRAK sprawdzania typu, czy jest dodatnia czy ujemna oraz długość + SQL inj



    new_member.php:

    SQL inj na $_POST['podanie']

    nextlevel.php:

    Tu można zastosować jakiś wzór. ponadto jakaś dziwnie MA?A wartość $nextlevel dla $team2['level'] == 9...

    przelicz.php:

    Do optymalizacji bo razi w ocka(!)

    quit.php:

    Jasne!

    team='0'

    A ciapy na "zero" można sobie podarować...

    tvt.php:

    Zbędne zmienne, liczenie można zwalić na bazę...


    Folder team/admin:


    applications.php:

    Znów filtrowanie vs SQL inj na $_GET['p'], można podać NIE swoją nazwe usera...



    change_team_description.php + change_team_name.php + change_team_tag.php:



    SQL inj na $_POST['new_desc'], $_POST['new_name'], $_POST['new_tag']

    Ponadto te pliki można było by zunifikować...


    image.php:

    SQL inj na $_POST['img']

    kick.php:


    SQL inj na $_POST['user']




    A teraz życzę kupę nerwów i niestrawnosci będąc w świadomości jak dużo błędów i bugów jest w race ^^
    Ostatnio edytowane przez Kiri ; 26-06-2009 o 19:49
    Sio, nie pomagam via PM !



  2. #2
    Zarejestrowany
    Dołączył
    Jun 2009
    Posty
    22

    Domyślnie

    Dobra robota Ucieszyłem się jak połatałem PA, a jak widzę co tu się dzieje w innych plikach to się załamałem i porzucam projekt

    Piwo dla Ciebie

  3. #3
    Zarejestrowany Awatar Kubiecov
    Dołączył
    Apr 2009
    Posty
    495

    Domyślnie

    Większość z tych błędów i zbędnych zapisów była z surowej wersji Smokera, sam ją upraszczam, bo za dużo zbędnych rzeczy
    W wersji Mearesa jest kilka, więc możemy przyjąć że większość idzie do Smokera.

  4. #4
    Zasłużony Awatar karer
    Dołączył
    Apr 2008
    Posty
    2,554

    Domyślnie

    Nie zapominajcie ze to nie jest konkurs na to kto mniej bledow zrobil. Kiri zobaczyla potencjal w ym silniuk wiec postanowila go w jakis sposob ustandaryzowac (moze slowo nie na miejscu) wytykajac bledy. Sama na pewno nie jest zainterowana praca nad tym silnikiem a to co podala to wytyczne co trzeba poprawic. Najlepiej jesli zrobi to osoba ktora modyfikowala kod tak zeby nie wydawac jeszcze jednej glupiej wersji "by ktostam".

    @Zawiej nie musisz porzucac projektu tylko poczekaj na EWENTUALNA poprawke autorow. Te poprawki sa poprawkami bezpieczenstwa wiec w 99% nie beda wplywaly na potrzebe modyfikacji swojej wersji.
    Nie wie się że SQL liczyć potrafi...? Ponadto $_POST['wloz'] to int więc ciapkować nie trzeba...
    Ja nie widze zeby bylo ciapkowane. 'wloz' musi byc w apostrofach poniewaz nie jest int a ciagiem znakow. Nie "ciapkujemy" tylko tablic indeksowanych numerycznie a ta jest indeksowana asocjacyjnie wiec wymaga ciapek. To taka mala uwaga.

    Daleko mi sie nie chcialo czytac bo jak zwykle jestem w nastroju poimprezowym i lepiej zebym za bardzo sie nie udzielal w kwestiach bezpieczenstwa. To tylko mi sie rzucilo w oczy.

    Pozdro.

  5. #5
    Dix
    Dix jest nieaktywny
    Zarejestrowany
    Dołączył
    May 2009
    Posty
    684

    Domyślnie

    Panel Admina jest mój a ja dopiero zaczynam pracę z php... Więc napewno jakieś błędy popełniłem.
    PS. Kiri wszystko w nim działa
    Sygnaturka

    NIE POMAGAM NA GG i PW!*
    *od każdej reguły są wyjątki, tzn gdy będę miał dobry dzień, wolny czas i nie będziecie natrętni chętnie mogę popisać na temat gier via www.

  6. #6
    Zarejestrowany
    Dołączył
    Mar 2008
    Posty
    374

    Domyślnie

    No Kiri jestem pełen podziwu - mnie by się szczerze mówiąc nie chciało grzebać w czymś takim

  7. #7
    Zasłużony Awatar Kemsan
    Dołączył
    Oct 2007
    Posty
    805

    Domyślnie

    ols1994 wszystko działa ponieważ na swoim serwie masz register_globals na ON, niektórym on nie działa bo tą opcje mają OFF

  8. #8
    Mistrz Joba Awatar Meares
    Dołączył
    Jan 2009
    Posty
    2,630

    Domyślnie

    Tak jak napisał Kubiecov. Większość plików nie była przeze mnie edytowana. Zgadazm się z faktem, że niektóre zapytania można było połączyć, ale ja te modyfikacje robiłem po kilku godzinach kodzenia i nie za bardzo miałem głowę do łączenia itd. W przypadku install.php i tych zapytań do bazy wykorzystałem oryginalną wersję pliku baza.php napisane go przez Smokera.

    PS. Czemu sądzisz, że addslashes() nie starcza?

  9. #9
    Dix
    Dix jest nieaktywny
    Zarejestrowany
    Dołączył
    May 2009
    Posty
    684

    Domyślnie

    To mają problem
    Sygnaturka

    NIE POMAGAM NA GG i PW!*
    *od każdej reguły są wyjątki, tzn gdy będę miał dobry dzień, wolny czas i nie będziecie natrętni chętnie mogę popisać na temat gier via www.

  10. #10
    Grupa MmoCenter Awatar Kiri
    Dołączył
    Sep 2007
    Posty
    1,741

    Domyślnie

    karer:

    Mi chodziło o:

    '$wloz2', a nie o wewnątrz $_POSTA ;p

    Meares - PS. Czemu sądzisz, że addslashes() nie starcza?



    Gdzie się sprawdza czy to liczba? Nigdzie, ponadto to przepuści SQL'owy komentarz i pewnie jak by pokombinował to jeszcze większe "osiągi" by miał...
    Sio, nie pomagam via PM !



Strona 1 z 3 123 OstatniOstatni

Informacje o wątku

Użytkownicy przeglądający ten wątek

Aktualnie 1 użytkownik(ów) przegląda ten wątek. (0 zarejestrowany(ch) oraz 1 gości)

Podobne wątki

  1. PDO wyłączenie wyświetlania błędów
    Przez wolny w dziale PHP / MySql
    Odpowiedzi: 1
    Ostatni post / autor: 18-02-2010, 13:42
  2. [MySQL] Diagnoza błędów
    Przez FluiD w dziale PHP / MySql
    Odpowiedzi: 8
    Ostatni post / autor: 30-12-2009, 16:22
  3. pomoc w naprawieniu błędów..
    Przez Pomylony w dziale Support Vallheru
    Odpowiedzi: 5
    Ostatni post / autor: 22-08-2009, 11:42
  4. [PHP]Rodzaje błędów
    Przez Vielta w dziale Poradniki
    Odpowiedzi: 7
    Ostatni post / autor: 21-07-2009, 16:46
  5. Xnova bez blędów
    Przez Mil0 w dziale Pytania dotyczące silnika Xnova
    Odpowiedzi: 3
    Ostatni post / autor: 24-05-2009, 10:05

Zakładki

Uprawnienia umieszczania postów

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •