Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Nowy prywatny serwer (By Norbertsons)


Norbertsons

Rekomendowane odpowiedzi

  • Odpowiedzi 191
  • Dodano
  • Ostatniej odpowiedzi
Opublikowano

Masz rację, ktoś mi zhakował zobaczę co i jak.

Nawet nie wiedziałem, że komuś będzie się chciało. 

Tylko po co to robił? Jak tak się zna, to niech własny zrobi.

baner.png

 

Opublikowano

Masz rację, ktoś mi zhakował zobaczę co i jak.

Nawet nie wiedziałem, że komuś będzie się chciało. 

Tylko po co to robił? Jak tak się zna, to niech własny zrobi.

pewnie po to zeby ci pokazac, jaki ten 'serwer' jest dziurawy.

Opublikowano

W ogóle nie kminie tego jaki ma sens trzymanie serwera na takim czymś... zamula, dziwnie się odświeża (nie wiem jak to dokładnie opisać) , reklamy (nie każdy potrafi wylączyć :D), a i co to za gówniane obrazki jakiegoś małego gówna z piłą mechaniczną w logo... 

Opublikowano

@Norbertsons

Powiem tak w twoich plikach jest ponad 10 dziur pozwalających na ataki SQL Injection a raczej w plikach które dałeś w poradniku "jak postawić priva gladiatusa na www". I nie mówię o jakiś zaawansowanych a o takich co średnio rozgarnięta małpa z pierwszym lepszym poradnikiem jest w stanie wykonać.

Te dziury w kodzie pozwalają na edycje rekordów w db, usunięcie tabeli, usunięcie całej db jak i usunięcie/modyfikacja/dodanie plików na serwerze.... 

 

Albo się weźmiesz porządnie za serwer gladiatusa [nie chodzi mi o dodawanie 5 przedmiotów co tydzień] albo go lepiej skasuj bo jak jakiś gościu wrzuci skrypt na twój serwer gromadzący dane o użytkownikach to istnieje szansa że do tyłka dobierze ci się policja a za wszystko będziesz odpowiadał ty.


pewnie po to zeby ci pokazac, jaki ten 'serwer' jest dziurawy.

Innej opcji chyba niema bo kto by chciał marnować czas.

Co do pierwszej awarii db w co wątpię żeby była w ogóle awarią i tej teraz to wnioskuje że dzisiaj jeszcze będziesz musiał od nowa wgrać db. No ale jak tak dalej pójdzie to będziesz wgrywał od nowa pliki i db na serwer.


W ogóle nie kminie tego jaki ma sens trzymanie serwera na takim czymś... zamula, dziwnie się odświeża (nie wiem jak to dokładnie opisać) , reklamy (nie każdy potrafi wylączyć :D), a i co to za gówniane obrazki jakiegoś małego gówna z piłą mechaniczną w logo... 

Dziwnie się odświeża dlatego że tak jest napisane w kodzie.

Jak trenujesz to po kliknięciu odświeża ci stronę by dodać ptk. statystyki i jeszcze raz automatycznie odświeża by ukryć zmienne przekazywane przez $_GET[''] by zamiast np:

www.strony.pl/index.php?trenuj=1

było:

www.strony.pl/index.php
Opublikowano

--SORRY ZA DUBLE POST ALE ZERWAŁO MI POŁĄCZENIE Z INTERNETEM I DODAŁO JAKO NOWY. ADMINISTRACJO SERDECZNIE PRZEPRASZAM.--

 

@Norbertsons

A teraz dodam tobie ostrzeżenie ode mnie abyś pomyślał nad dalszymi losami swojego serwera.

1.

Jak wpisze się dany login i 5 fajnych znaków w polu na login [jak się loguje] to spokojnie można się logować na każde konto bez hasła. [testowane u mnie na localhost na plikach z twojego poradnika].

2.

Jak przy rejestracji zamiast emai-la wpisze się bany ciąg znaków i powiem tak "magiczny ciąg znaków"  :D to można wyświetlić spokojnie wszystko co masz w bazie danych i to nie na twoim serwerze a np na localhos-cie atakującego. [testowane u mnie na localhost na plikach z twojego poradnika] a wyświetlałem db na moim serwerze na proserwer.pl

 

Więcej nie napisze co gdzie można zrobić bo co chwile będą ci serwer rozwalać. Co do powyższych to zwykły laik tego nie zrobi bo masz warunek dla przekazywanej zmiennej, ale to żadna przeszkoda dla osoby znającej PHP i struktury MSQL.

 

@Edit.

Dodanie mysql_real_escape_string() w kilkunastu miejscach gdzie wczytuje zmienne z $_GET i $_POST zajmuje ponad 4 godzin. New World Record.

Opublikowano

xDefqonOnex:

Nie wiem czy jestem w stanie dodać regenerację hp. Jedyne co umiem, to samodzielnie w bazie danych wyleczyć danego gościa. Przypominam, że nie jestem Webmasterem.

 

3nichilat0:

Nie wiem gdzie są te dziury. Ale widziałem w db w wiadomościach jak jakiś koleś dziwnie pisał, tak jak by edytował moją bazę danych. W wiadomościach były kody tóre przestawiają nawet nazwy gildii. Sam sobie z tym nie poradzę nie znam nikogo kto się zna na tym tak dobrze jak Wy.

Można powiedzieć, że nie znam nawet podstaw php. A to nie wystarczy, by naprawić, to że tak łatwo można zhakować mój serwer.

Ten kto to robi pewnie umie zrobić 200 razy lepszy serwer od mojego. Tylko co mu przeszkadza mój serwer, nie podoba mu się? To niech nawet na niego nie wchodzi.

Nie uważam się za Webmastera, dlatego sam tego nie naprawię. Jedyne co mogę zrobić, to poprosić Was o pomoc.

Ale naprawa jest tak prosta, że nawet Wam "się nie chce".

 

3nichilat0:

Dzięki za wytłumaczenie. Wiem o co chodzi, ale nie umiem sam tego naprawić.

 

 

Edit:

3nichilat0:

Całej db nie muszę wgrywać, bo mam kopię zapasową z przed 3 dni.

 

Nadal nie kminię, co komuś przeszkadza mój serwer. Niech nawet nie wchodzi na niego albo niech sam zrobi 200 razy lepszy.

baner.png

 

Opublikowano

ja to bym najprościej w świecie przeszedł na pdo w tym przypadku i przepisal silnik obiektowo ;P

PDO trzeba umieć bo jak źle napiszesz to wywali ci błąd a w nie których zwraca np login i hasło do mysql-a. Kochane wyjątki błędów w PDO.

W PDO i strukturze musisz filtrować dane wejściowe więc czy będzie obiektowo czy strukturalnie zmieni się tylko szybkość wykonywania skryptu.

 

 

@Norbertsons

Fragmenty plików z paczki którą wrzuciłeś na forum:

verificar.php

 

Cz.1

if(empty($_SESSION['user'])){
$id = $_GET['id'];
if($_POST['registrar']){
$tnc = $_POST['tnc'];
$nome = htmlspecialchars($_POST['nome']);
$senha = md5($_POST['senha']);
$senha1 = ($_POST['senha']);
$email = $_POST['email'];
$ip = $_SERVER['REMOTE_ADDR'];
if(!empty($nome) && !empty($senha1) && !empty($email)){
if($tnc == 1){

Cz. 2

if (!empty($_POST['nome']) && !empty($_POST['senha'])){
$_POST['nome'] = $_POST['nome'];
$_POST['senha'] = md5($_POST['senha']); 

-------------------------------------------------------------------------------------------------------------------

0. Cz.1

 

Proszę cie:

if($_POST['registrar']){

na :

if(isset($_POST['registrar'])){ 

i :

if(!empty($nome) && !empty($senha1) && !empty($email)){ 

na :

if(!empty($nome) && !empty($senha) && !empty($email)){ 

-------------------------------------------------------------------------------------------------------------------

1. Cz.1

 

niezabezpieczona zmienna przesyłana z formularza   $_POST['tnc']  , defakto przez takie niedbalstwo do kodu można przesłać wszystko edytując tylko wartość value inputa tnc poprzez developer tools. Akceptacja regulaminu ma mieć wartość jedynie 0 lub 1 albo TRUE lub FALSE. Zamień :

$tnc = $_POST['tnc'];

na :

$tnc = (int)$_POST['tnc'];

a później w kodzie sprawdzasz czy ktoś zaznaczył i ma wartość 1 czy nie i ma wartość 0.

-------------------------------------------------------------------------------------------------------------------

2. Cz.1

$nome = htmlspecialchars($_POST['nome']);

Filtrujesz znaki niebezpieczne dla html-a ​ale przecież nie wypisujesz tego na stronę więc po co. A jak ktoś wpisze dwa znaki '  --   ' czyli komentarz dla mysql-a to sam się domyśl co się stanie.

zamień na :

$nome = mysql_real_escape_string($_POST['nome']);

-------------------------------------------------------------------------------------------------------------------

3. Cz.1

$senha = md5($_POST['senha']);

Niby niezabezpieczone ale tu i tak się nie da nic zrobić.

-------------------------------------------------------------------------------------------------------------------

4. Cz.1

$senha1 = ($_POST['senha']);

Nigdzie nie używane skasuj.

-------------------------------------------------------------------------------------------------------------------

5. Cz.1

$email = $_POST['email'];

po co ci pole email jak można do niego wpisać np samo słowo 'dupa' i tak będzie dobrze.

zamień na :

$email = mysql_real_escape_string($_POST['email']);
if(filter_var($email, FILTER_VALIDATE_EMAIL)){}else{ header('Location: /.'); 

-------------------------------------------------------------------------------------------------------------------

6. Cz.2

$_POST['nome'] = $_POST['nome'];

na :

$_POST['nome'] = $_POST['nome'];

Na tym przykładzie powinieneś cały silnik w 20 min przejrzeć i go zabezpieczyć mysql_real_escape_string() da się "złamać" ale kto kto wie o tym serwerze umie przeprowadzić złożony wielostopniowy atak SQL Injection.

Wszystkie zmienne tekstowe które dostajesz przez $_GET i $_POST a chcesz je użyć w zapytaniu MYSQL_QUERY filtruj poprzez mysql_real_escape_string() - w nawiasy wstawiasz zmienną.

Każda zmienna która na wejściu przesyłana przez $_GET i $_POST powinna być liczbą to przed zmienna dajesz (int) - RZUTOWANIE na dany typ np. $tnc = (int)$_POST['tnc'];

 

Do tego kursy PHP i MYQSL i do roboty leniu!!!!!!!!!!!!!!!!!!!!!!!

 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

@Edit_1

Do tego w wielu plikach jest np takie coś:

if($zmienna1 = $zmienna2){

gdybyś nie wiedział to sam znak '   =   ' - to znak PRZYPISANIA, natomiast znakiem PORÓWNANIA jest '    ==     '.

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

@Edit_2

Wywal z serwera pliki które nie są używane [jeszcze nie dodałeś ich do kodu] a można je użyć np plik '  config_a - v1.php  '. Jakie to ja cuda na lokalhos-cie wywijałem tym plikiem.

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

@Edit_3

Plik '   delete_a.php   ' odpowiedzialny za usuwanie gildii. Jak ktoś w przeglądarce dopisze do ' www.strona.pl/delete_a.php   '  np '  ?usun=1    ' to skrypt usunie gildie o id = 1 mimo że nawet nie jesteśmy członkiem z co dopiero mistrzem.

 

Aby jako tako zabezpieczyć usuń z pliku [usuwa możliwość kasowania gildii]:

    $_GET['usun'] = (int)$_GET['usun'];
    mysql_query("delete from allys where id = ".$_GET['usun']); 

///Plik do poprawy.

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

@Edit_4

Cały plik '   enviarmensagem.php   ' do poprawki 0 zabezpieczeń:

if(!empty($_GET['enviada'])){
$_GET['enviada'] = $_GET['enviada'];	
if(isset($_POST['enviar'])){
$id_usuario_r = $_POST['id_usuario_r'];
$mensagem = $_POST['mensagem'];		
$login_usuario_s = $nome['login'];
$id_usuario_s = $nome['gracz'];
$assunto = $_POST['assunto'];	
Opublikowano

3nichilat0:

Wielkie dzięki.

Spróbuję to ogarnąć i pozmieniać.

 

EDIT:

Najpierw chcę wgrać kopię zapasową z przed kilku dni, jak wszystko jeszcze było OK.

 

$senha = md5($_POST['senha']);

To akurat jest przemyślane md5 by szyfrowało.

 

EDIT2:

Wszystko co napisałeś podmieniłem. Chodzi o to "to na to a to na to".

Ale i tak to pewnie nie wszystko.

baner.png

 

Opublikowano

Chłopie ja ci raptem 2 pliki ze 117 podpowiedziałem resztę robisz analogicznie na takiej samej zasadzie jak w przykładach.

 

 

 

$senha = md5($_POST['senha']);

To akurat jest przemyślane md5 by szyfrowało..

 

Dlatego napisałem że i tak nic przez tą zmienna potencjalny włamywacz nie zrobi.

Opublikowano

Chciałbym darmowe Diamenty na vipa

Nick:SheepeR

 

serwer fajnie ładnie zrobiony

sygnatura niezgodna z regulaminem forum mpc rozdział II pkt. 7

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...