Crearea unui meniu pe mai multe niveluri în php. Instrucțiuni pentru utilizarea jSQL Injection - un instrument multifuncțional pentru găsirea și exploatarea injecțiilor SQL în Kali Linux

Rulați fișierul descărcat dublu click(trebuie să aibă mașină virtuală ).

3. Anonimat la verificarea site-ului pentru injecții SQL

Configurarea Tor și Privoxy în Kali Linux

[Secțiune în curs de dezvoltare]

Configurarea Tor și Privoxy pe Windows

[Secțiune în curs de dezvoltare]

Setări jSQL Injection proxy

[Secțiune în curs de dezvoltare]

4. Verificarea site-ului pentru injectare SQL cu jSQL Injection

Lucrul cu programul este extrem de simplu. Doar introduceți adresa site-ului și apăsați ENTER.

Următoarea captură de ecran arată că site-ul este vulnerabil la trei tipuri de injecții SQL simultan (informațiile despre acestea sunt indicate în colțul din dreapta jos). Făcând clic pe numele injecțiilor, puteți schimba metoda utilizată:

De asemenea, am afișat deja bazele de date existente.

Puteți vedea conținutul fiecărui tabel:

De obicei, cea mai interesantă parte a tabelelor este acreditările de administrator.

Dacă ai noroc și ai găsit datele administratorului, atunci este prea devreme să te bucuri. De asemenea, trebuie să găsiți panoul de administrare, unde să introduceți aceste date.

5. Căutați administratori cu jSQL Injection

Pentru a face acest lucru, mergeți la următoarea filă. Aici suntem întâmpinați de o listă de adrese posibile. Puteți selecta una sau mai multe pagini pentru a verifica:

Comoditatea este că nu trebuie să utilizați alte programe.

Din păcate, programatorii neglijenți care stochează parolele formă deschisă, nu prea mult. Destul de des în șirul parolei vedem ceva de genul

8743b52063cd84097a65d1633f5c74f5

Acesta este un hash. Îl puteți decripta cu forță brută. Și... jSQL Injection are un brute-forcer încorporat.

6. Hash-uri de forțare brută cu injecție jSQL

Comoditatea fără îndoială este că nu trebuie să căutați alte programe. Există suport pentru multe dintre cele mai populare hashe-uri.

Nu este cel mai bun cea mai buna varianta. Pentru a deveni un guru în descifrarea hashurilor, este recomandată cartea „” în rusă.

Dar, bineînțeles, când nu există un alt program la îndemână sau nu există timp de studiat, jSQL Injection cu o funcție de forță brută încorporată va fi utilă.

Există setări: puteți seta ce caractere sunt incluse în parolă, intervalul de lungime a parolei.

7. Operații cu fișiere după detectarea injecției SQL

Pe lângă operațiunile cu baze de date - citirea și modificarea acestora, dacă sunt detectate injecții SQL, pot fi efectuate următoarele operațiuni cu fișiere:

  • citirea fișierelor de pe server
  • încărcarea fișierelor noi pe server
  • încărcarea shell-urilor pe server

Și toate acestea sunt implementate în jSQL Injection!

Există limitări - serverul SQL trebuie să aibă privilegii de fișier. Rezonabil administratorii de sistem sunt cu dizabilități și au acces la Sistemul de fișiere nu poate fi obținută.

Prezența privilegiilor de fișier este destul de ușor de verificat. Accesați una dintre file (citirea fișierelor, crearea unui shell, încărcarea unui fișier nou) și încercați să efectuați una dintre operațiunile indicate.

Încă foarte notă importantă trebuie să știm exact cale absolută la fișierul cu care vom lucra - altfel nu va funcționa nimic.

Uită-te la următoarea captură de ecran:

Orice încercare de a opera asupra unui fișier primește răspunsul: Niciun privilegiu FILE(fără privilegii de fișier). Și nu se poate face nimic aici.

Dacă în schimb aveți o altă eroare:

Problemă la scrierea în [nume_director]

Aceasta înseamnă că ați specificat incorect calea absolută în care doriți să scrieți fișierul.

Pentru a-și asuma o cale absolută, trebuie măcar să știi sistem de operare pe care rulează serverul. Pentru a face acest lucru, treceți la fila Rețea.

O astfel de intrare (șir Win64) ne dă motive să presupunem că avem de-a face cu sistemul de operare Windows:

Keep-Alive: timeout=5, max=99 Server: Apache/2.4.17 (Win64) PHP/7.0.0RC6 Conexiune: Keep-Alive Metodă: HTTP/1.1 200 OK Lungime conținut: 353 Data: Vineri, 11 Dec 2015 11:48:31 GMT X-Powered-By: PHP/7.0.0RC6 Tip de conținut: text/html; set de caractere=UTF-8

Aici avem câteva Unix (*BSD, Linux):

Codificare transfer: fragmentat Data: vineri, 11 decembrie 2015 11:57:02 GMT Metoda: HTTP/1.1 200 OK Keep-Alive: timeout=3, max=100 Conexiune: keep-alive Tip de conținut: text/html X- Produs de: PHP/5.3.29 Server: Apache/2.2.31 (Unix)

Și aici avem CentOS:

Metodă: HTTP/1.1 200 OK Expiră: Joi, 19 Nov 1981 08:52:00 GMT Set-Cookie: PHPSESSID=9p60gtunrv7g41iurr814h9rd0; path=/ Conexiune: keep-alive X-Cache-Lookup: MISS de la t1.hoster.ru:6666 Server: Apache/2.2.15 (CentOS) X-Powered-By: PHP/5.4.37 X-Cache: MISS de la t1.hoster.ru Cache-Control: fără stocare, fără cache, revalidare obligatorie, post-verificare=0, pre-verificare=0 Pragma: fără cache Data: vineri, 11 decembrie 2015 12:08:54 GMT Transfer-Encoding: chunked Content-Type: text/html; set de caractere=WINDOWS-1251

LA Windows tipic folderul site-ului este C:\Server\date\htdocs\. Dar, de fapt, dacă cineva „s-a gândit” să facă un server pe Windows, atunci, foarte probabil, această persoană nu a auzit nimic despre privilegii. Prin urmare, ar trebui să începeți să încercați direct din directorul C: / Windows /:

După cum puteți vedea, totul a mers perfect de prima dată.

Dar shell-urile jSQL Injection în sine îmi ridică îndoielile. Dacă aveți privilegii de fișier, atunci puteți încărca ceva cu o interfață web.

8. Site-uri de verificare în bloc pentru injecții SQL

Și chiar și jSQL Injection are această caracteristică. Totul este extrem de simplu - încărcați o listă de site-uri (pot fi importate dintr-un fișier), selectați-le pe cele pe care doriți să le verificați și faceți clic pe butonul corespunzător pentru a începe operația.

Ieșire prin injecție jSQL

Injecția jSQL este bună, Unealtă puternică pentru căutarea și utilizarea ulterioară a injecțiilor SQL găsite pe site-uri. A lui avantaje neîndoielnice: ușurință în utilizare, funcții conexe încorporate. jSQL Injection poate fi cel mai bun prieten al începătorilor atunci când analizează site-uri web.

Printre deficiențe, aș remarca imposibilitatea editării bazelor de date (conform macar Nu am găsit această funcționalitate. Ca toate instrumentele cu GUI, dezavantajele acestui program pot fi puse pe seama imposibilității utilizării în scripturi. Cu toate acestea, este posibilă o anumită automatizare și în acest program - datorită funcției încorporate verificare în masă site-uri.

jSQL Injection este mult mai convenabil de utilizat decât sqlmap. Dar sqlmap acceptă mai multe tipuri de injecție SQL, are opțiuni de firewall pentru fișiere și alte caracteristici.

Concluzie: jSQL Injection - cel mai bun prieten hacker începător.

Ajutor pentru acest program în Enciclopedie Kali Linux veți găsi pe această pagină: http://kali.tools/?p=706

În acest articol, vă voi arăta cum să creați meniu pe mai multe niveluri în PHP și MySQL. Desigur, puteți veni cu multe opțiuni pentru a-l crea, dar, judecând după numărul de întrebări pe această temă, aveți nevoie de un exemplu. Și o voi prezenta în acest articol. Observ imediat că acest articol are sens doar pentru cei care știu PHPși este capabil să lucreze cu MySQL. Toți ceilalți trebuie să treacă mai întâi prin asta sau să citească câteva cărți PHP și MySQL.

Mai întâi, să creăm un tabel în baza de date cu următoarele câmpuri:

  • id- identificator unic.
  • titlu- Ancora link-uri în meniu.
  • legătură- adresa la care va duce articolul de meniu.
  • parent_id- ID de părinte. Dacă nu există niciun element părinte, atunci va fi NULL (sau puteți pune un alt 0).

Ne-am dat seama de masă, acum este timpul cod php. Deplin Cod PHP dat mai jos:

$mysqli = mysqli nou("localhost", "root", "", "db"); // Conectați-vă la baza de date
$result_set = $mysqli->query("SELECT * FROM `menu`"); // Faceți o selecție a tuturor înregistrărilor din tabelul cu meniul
$items = array(); // Matrice pentru elementele de meniu
while (($row = $result_set->fetch_assoc()) != false) $items[$row["id"]] = $row; // Umpleți matricea cu o selecție din baza de date
$copii = matrice(); // Matrice pentru potrivirea elementelor copil cu părintele lor
foreach ($articole ca $item) (
if ($item["parent_id"]) $childrens[$item["id"]] = $item["parent_id"]; // Completați tabloul
}
funcția printItem($item, $items, $children) (
/* Afișează elementul de meniu */
ecou"

  • ";
    echo "".$item["titlu"]."";
    $ul = fals; // Au fost afișate elemente copil?
    în timp ce (adevărat)(
    /* Buclă fără sfârșit în care căutăm toate elementele copil */
    $key = array_search($item["id"], $copii); // Se caută un element copil
    dacă (!$key) (
    /* Nu s-au găsit elemente copil */
    dacă ($ul) ecou ""; // Dacă au fost afișate elemente copil, atunci închideți lista
    pauză; // Ieși din buclă
    }
    unset($copii[$cheie]); // Eliminați elementul găsit (pentru ca acesta să nu fie afișat din nou)
    dacă (!$ul) (
    ecou"
      "; // Începe lista interioară dacă nu au existat încă copii
      $ul = adevărat; // Setați steagul
      }
      echo printItem($items[$key], $items, $children); // Emite recursiv toate elementele copil
      }
      ecou"";
      }
      ?>

      Acest cod funcționează pe deplin, cu toate acestea, ar trebui să înțelegeți că nimeni nu scrie așa (în special, ieșirea prin ecou Etichete HTML). Și sarcina ta este să iei algoritmul din acest cod, dar nu și codul în sine. Și apoi conectați acest algoritm la motorul dvs. Am încercat să comentez cu atenție codul de ieșire meniu pe mai multe niveluri în PHP și MySQL, dar, desigur, nu este cel mai transparent și necesită cunoștințe inițiale destul de bune. Daca tot nu stii PHP și MySQL, atunci mai întâi recomand cu tărie să treci prin asta

      Meniul unui site în php, care este controlat de scripturi php, are propriile sale caracteristici. Nici nu este doar absolut legături relative, deși acesta poate fi cazul, dar, de regulă, blocurile de legături din bara laterală generate dinamic cu secțiuni și subsecțiuni și blocuri de legături de la sine pagini interne site-ul. Un meniu generat dinamic este foarte convenabil, deoarece poate fi introdus oriunde pe site și, cel mai important, în la fix. Adică, atunci când accesați diferite secțiuni și subsecțiuni, puteți extinde dinamic diferite blocuri de meniu. Mai mult, ele pot fi diferite nu numai prin conținut, ci și ca formă și design. Într-un site static, este, de asemenea, destul de posibil să faci astfel de femeni, dar va costa fișiere suplimentareșabloane și o mulțime de alte trucuri. În timp ce un site scris în php nu necesită nimic din toate acestea. Șablonul va rămâne așa cum a fost. Totul va fi gestionat de unul sau mai mulți php simplu scenarii.

      Pentru a verifica acest lucru, este suficient să scrieți un script php pentru a genera dinamic un meniu, de exemplu, primul titlu și să îl forțați să extindă meniul acestui titlu prin scriptul scris anterior. Restul rubricilor pot fi formate într-un mod similar. Mai mult, codul scriptului în sine nu se va schimba prea mult. Se va schimba doar fișierul text, care va defini numele legăturilor și legăturile în sine. Codul pentru un astfel de script este dat mai jos.

      // Creator de meniu
      $meniu = @fisier($rubric1_meniu);
      $linii = count($meniu);
      pentru ($i = 0; $i< $lines; $i++)
      {
      list($menu_link,$menu_name,$menu_title)=explode("::", $meniu[$i]);
      if($page == rub1_part1 și $i == 0) ($refcolor = "style="color:#cc0000"";)
      elseif($page == rub1_part2 și $i == 1) ($refcolor = "style="color:#cc0000"";)
      elseif($page == rub1_part3 și $i == 2) ($refcolor = "style="color:#cc0000"";)
      else ($refcolor = "";)
      $rubric1.="

    • ".$nume_meniu."
    • ";
      }
      ?>

      Pentru ca un astfel de script să funcționeze, este nevoie de un fișier text în care vor fi stocate numele legăturilor meniului, legăturile în sine și titlul acestora. Nu este dificil să creați un astfel de fișier, este suficient să executați comanda Fișier -> Nou din meniul principal Dreamweaver, creați un nou document html, așa cum este descris mai devreme, verificați și, dacă este necesar, modificați codarea noului fișier în UTF-8, apoi salvați-l sub numele rubric1.dat în fișierul creat anterior pentru acesta folderul de date. Calea plină la acest fișier va fi D:/Mysitephp/data/rubric1.dat. Conținutul fișierului de mai jos este linkurile în sine, numele și titlurile lor (sfaturi). În plus, pentru a rula acest script în funcțiune, trebuie să fie conectat folosind funcția include()în motorul de șablon main.php.

      Rub1_part1::Secțiunea 1::Secțiunea 1 a rubricii 1::
      rub1_part2::Secțiunea 2::Secțiunea 2 rubrica 1::
      rub1_part3::Secțiunea 3::Secțiunea 3 rubrica 1::

      În plus, este, de asemenea, necesar să creați un mic script cu setări care va stoca adresa completă a site-ului, căile către folderele paginilor și meta descrierile site-ului, căile către fișierele meniului site-ului și conectați-l folosind functia include()în motorul de șablon main.php. Pentru a face acest lucru, trebuie să creați un nou fișier php, și salvați-l sub un nume precum settings.php în folderul php. Calea completă către fișier va fi D:/Mysitephp/php/setings.php și conținutul acestuia este afișat mai jos.

      # folder cu documente html
      $doctemplates = "șabloane";
      # cale completă către directorul de scripturi
      $turl="http://mysitephp.ru";
      # bază de date cu date
      $rubric1_menu = "date/rubric1.dat";
      ?>

      Cum funcționează scriptul php pentru generarea meniului? Mai întâi la variabila $menu folosind funcția fişier() se plasează conținutul fișierului text rubric1.dat. Apoi funcția numara() numără numărul de linii în fisier text si functii listă()și exploda()în ciclu, meniul în sine este desfășurat, unde prin metoda de lipire a liniilor (operație cu puncte . ) se formează șiruri de legături cu numele și titlurile lor, care apoi sunt plasate în variabila $rubric1. Apoi, scriptul de șablon, unde scriptul de meniu este conectat de funcție include(), mută conținutul variabilei $rubric1 în Locul potrivit site folosind funcția descrisă anterior repl().

      Un astfel de meniu nu va funcționa încă, deoarece conține doar linkurile în sine cu toate atributele necesare, dar nu există un script care să asigure trecerea la aceste link-uri și deschiderea paginilor site-ului care vor corespunde acestor link-uri. Acest script php o vom duce mai departe.

      Mai departe este posibil ca proiectul să fie actualizat printr-un script de formare a meniului. De asemenea, puteți descărca proiectul actualizat de pe pagina care se va deschide după înregistrare și activare abonament gratuit pe panoul din dreapta. Adresa paginii trebuie salvată. Pe această pagină vor apărea în viitor link-uri pentru descărcarea actualizărilor de proiecte, diverse scripturi utile, programe, lecții și tutoriale video despre circuite, programare și construirea site-ului. pentru începători.

      Proiectul php de site descărcat actualizat cu scripturi noi poate fi acum comparat cu ceea ce s-a întâmplat ca urmare a acțiunilor de mai sus. În plus, pentru a elimina discrepanțe, va fi util să înlocuiți complet proiectul cu cel descărcat, să efectuați operația, să rulați Serverul Denver, tastați mysitephp.ru în fereastra browserului și vedeți ce a rezultat. În partea din stânga sus a șablonului, meniul primei secțiuni ar trebui să se extindă, așa cum se arată în imaginea de mai jos.

      Du-te și topește-te în rețeaua ta de socializare preferată

      Pentru că expune conținutul modulului menu.php. Mai jos vor fi prezentate propria dezvoltare meniu în PHP, care a fost scris de la zero în notepad.

      Acest cod va fi util în special pentru site-urile dinamice care au scris singur motoare. Voi oferi două versiuni ale codului care au diferențe minore (care diferență va fi explicată mai târziu).

      Pentru început, voi oferi o structură aproximativă a site-ului pentru care este potrivit acest meniu. Structura site-ului ar trebui să fie următoarea vedere (aspect clasic):

      /index.html /section_1/ /razdel_1/articles_1.html /razdel_1/articles_2.html ... /razdel_2/ /razdel_2/articles_1.html /razdel_2/articles_2.html ... ... ... /razdel_N/articles_2 .html

      Site-ul poate conține și subsecțiuni pentru secțiuni:

      /section_1/podzaderl_1/ /section_1/podzaderl_1/articles_1.html /section_1/podzaderl_1/articles_2.html ... /section_1/podzaderl_2/articles_1.html /section_1/podzaderl_2/articles_2.html

      Această structură va funcționa și pentru meniul nostru, cu doar diferențe minore.

      imi propun sa creez dosar separat pentru meniu în php. De exemplu, menu.php ar fi un nume grozav pentru un astfel de fișier. Pentru a implementa meniul este de asemenea prezentat stil meniu în CSS pentru a-l face imediat mai mult sau mai puțin frumos. Desigur, acest stil este dat doar pentru referință, deoarece design-urile site-urilor sunt foarte diferite.

      Cod stil de meniu CSS:

      .meniu (înălțime:42px; umplutură:0 0 0 16px; fundal:url(images/spacer.png) repetare; ) .meniu li ( display:block; float:left; ) .meniu li.active ( fundal: #000011 ; ) .meniu a (color:#FFF; display:block; line-height:42px; text-decoration:none; padding:0 14px; ) .menu a:hover ( background:url(images/spacer.png) repetare ;)

      Acum, să aruncăm o privire la implementarea primului meniu în PHP, care este puțin o simplificare.

      Prima versiune a codului de meniu în PHP

      \n"; pentru ($i=0;$i ": "
    • "; ecou" ".$array_menu[$i]["nume"]."
    • \n"; ) echo "
    "; ?>

    Meniul poate fi împărțit în două părți. Prima conține o matrice de informații $array_menu , care conține numele secțiunilor noastre cu link-uri către secțiuni. Există vreo modalitate de a adăuga aceste date în baza de date? date mySQL, dar nu există niciun punct special în acest sens, deoarece eșantionul este foarte mic, astfel încât acest lucru nu va afecta viteza de lucru.

    A doua parte conține meniul de ieșire prin pentru buclă. Bucla compară adresa site-ului web cu adresa din matricea $array_menu. Dacă există o potrivire, atunci vom afișa următoarea secțiune a meniului cu o clasă specială activă:

  • , altfel doar
  • . Acest lucru ne permite să evidențiem cu o anumită culoare acea parte a meniului în care se află utilizatorul. După părerea mea, acesta este un lucru necesar oricărui site pentru ca utilizatorul să înțeleagă în ce secțiune se află.

    Ordinea în matrice va fi păstrată la afișarea meniului pe site. Adică, matricea trebuie să fie completată în ordinea în care doriți să afișați meniul.

    Notă:
    În cazul în care adresele URL (adresele) ale titlului secțiunilor arată astfel:
    /sectiunea 1
    sau așa
    /section_1/name_razdela.html
    apoi în array_menu trebuie să scrieți potrivirea exactă:
    $array_menu[$i]["url"]="/section_1"
    sau pentru al doilea caz:
    $array_menu[$i]["url"]="/section_1/nazvanie_razdela.html";

    Cum funcționează prima opțiune de meniu?
    Evidențiază meniul doar dacă vă aflați la adresa titlului secțiunii. De exemplu, dacă adresa paginii este /section_1/articles_1.html , atunci meniul nu va fi evidențiat în niciun fel.

    A doua versiune a codului este o versiune modificată a primei și prevede posibilitatea evidențierii meniului chiar și în articolele care sunt în secțiuni.

    A doua versiune a codului de meniu în PHP

    "; pentru ($i=0;$i ": "
  • "; ecou" ".$array_menu[$i]["titlu"]."
  • "; ) else ( echo ($URL) == ($array_menu[$i]["url"])? "
  • ": "
  • "; ecou" ".$array_menu[$i]["titlu"]."
  • "; ) ) ecou ""; ?>
    • Serghei Savenkov

      un fel de recenzie „rare”... parcă s-ar grăbi undeva