Printbuddy - Educational - Argeș - Lucrari 2024 Nationala

Informatii generale

Descriere

PrintBuddy este un site dedicat imprimării 3D care își propune să ofere o resursă centralizată cu manuale de utilizare, cursuri și sfaturi practice pentru toate tipurile de imprimante 3D. Indiferent de nivelul de cunoștințe al utilizatorului, fie el începător sau experimentat, Printbuddy oferă o experiență user-friendly și informații ușor de accesat.

Prin intermediul acestei platforme, ne-am propus să-i implicăm pe utilizatori, oferindu-le oportunitatea de a împărtăși idei și impresii prin intermediul comunității unde se pot conecta, odată ce și-au făcut cont.

Fiind pasionați de imprimarea 3D, ne-am dat seama cât de dificil este pentru noi, dar și pentru cei care ne împărtășeșc pasiunea să găsească informații clare și resurse accesibile, deoarece nu există un site care să le cuprindă pe toate. După mai multe sesiuni de brainstorming ne-am gândit să creăm chiar noi o platformă dedicată pasiunii noastre care să ofere cât mai multă informație despre acest domeniu.

  • Platforma poate fi accesata la printbuddy.ro

Tehnologii

Printbuddy a fost realizat cu ajutorul unei game variate de tehnologii care îmbunătățesc atât experiența utilizatorului cât și eficiența proceselor realizate de către server.

Pentru design-ul platformei am folosit Figma, o aplicație destinată design-ului web aceasta facilitând nu doar o colaborare ușoară cât și opțiunea de a integra prototipuri interactive și posibilitatea de a actualiza versiunile curente, toate acestea cât mai eficient posibil.

CPanel este metoda de gestionare a site-ului împreună cu un FTP pentru încărcarea eficientă de date. De asemenea, gestionarea bazelor de date se face din panoul phpMyAdmin facilitat tot de CPanel.

Pentru a îmbunătăți calitatea experienței utilizatorilor noștri, am ales să implementăm un asistent AI, realizat cu ajutorul Botpress, această platformă permițând personalizarea propriului asistent AI în ceea ce privește modul de funcționare cât și cunoștințele de care acesta dispune.

În ceea ce privește tehnologiile pentru construcția propriu zisă a platformei, am folosit frameworkul Tailwind CSS pentru a stiliza componentele site-ului adăugând pe lânga clasele puse la dispoziție de acest framework și clase custom pentru a îndeplini cerințe specifice de design.

Datorită deciziei noastre de a realiza proiectul full-code, ca și limbaje de programare am folosit:
• HTML - pentru scheletul platformei
• CSS - pentru stilizare
• PHP (SPL - Standard PHP Library) - pentru interacțiunea cu serverul
• Javascript - pentru animații și fluiditate
• AJAX (Asynchronous JavaScript And XML) - pentru comunicarea între client-side și server-side
• MYSQLi - pentru încărcarea/ștergerea/modificarea datelor din baza de date

Cerinte sistem

Poate fi accesat online de pe orice dispozitiv.

Găzduirea locală se poate realiza cu ajutorul oricărui desktop/laptop. Pentru mai multe detalii a se consulta pagina de github a proiectului - README.md

Realizatori

Stefan Dore

  • Scoala: Colegiul Național Zinca Golescu
  • Clasa: 10
  • Judet: Argeș
  • Oras: Pitești

Cezara Constantinescu

  • Scoala: Colegiul Național Zinca Golescu
  • Clasa: 10
  • Judet: Argeș
  • Oras: Pitești

Screenshots

Salut!

Dragut proiectul si ideea voastra! Am primit un mesaj de la cineva pe grupul de admitere la poli despre acest proiect si ca vreti sa va spunem ce bug-uri gasim - mi se pare un lucru foarte bun si de actualitate (similar cu programele de bug bounty / bug reporting de la companiile mari).

Voiam sa va spun ca am descoperit ca este vulnerabil la Cross-Site Scripting (XSS) pe pagina de FAQ (cred ca si altele dar n-am incercat). Field-urile de pe /addFAQ nu sunt validate pentru XSS si astfel poate fi injectat Javascript in pagina de intrebari frecvente. Acest lucru poate fi exploatat in multe moduri malitioase (pot fi furate token-uri de session, de exemplu).

O alta vulnerabilitate pe care am gasit-o este SQL Injection. Cel mai simplu mi s-a parut de exploatat pe /saveSystemProcess/toggleSave. Un payload pentru aceasta vulnerabilitate ar fi printerName' AND SLEEP(5) -- - . Daca transmitem un request POST cu aceasta valoare pt parametrul printerName la path-ul de mai sus, putem observa ca raspunsul server-ului va veni dupa ~5 secunde, demonstrand ca se pot insera comenzi SQL. Mai departe, fiind o vulnerabilitate time-based (adica nu putem primi direct raspunsul prin request-ul post, insa putem folosi delay-uri asociate fiecarui byte primit, cum ar fi 1 secunda = litera a, 2 secunde = litera b etc.), putem sa folosim tool-uri precum sqlmap sa obtinem datele din baza de date / sa le modificam.

Ar fi bine sa remediati aceste vulnerabilitati :slight_smile: . Nu este foarte greu, ce trebuie facut este sa filtrati input-urile pe care le aveti ca sa nu fie posibila inserarea de SQL / Javascript. Puteti sa folositi prepared statements pentru partea de SQL.

Succes!