Cum să efectuați comanda SQL insert sau update folosind injecția SQL (Securitatea informațiilor, Injecție Sql)

Shahrukh Khan a intrebat.

Am un URL http://localhost/usernfo.php?id=8 pe care se poate efectua o injecție SQL.

Cum pot efectua o comandă de actualizare, inserare sau ștergere de pe acest link după ce am obținut structura bazei de date?

user45139

Comentarii

  • Depinde de modul în care ați reușit să efectuați injecția. Spuneți-ne cum ați făcut acest lucru și vă putem ajuta. – user45139
1 răspunsuri
stanko

Să spunem că aplicația utilizează parametrul id (care este în exemplul dvs. 8) pentru a crea următoarea interogare:

SELECT * FROM news WHERE id=8 and active=1

Dacă parametrul id este injectabil, ai putea, de exemplu, în URL, în loc de 8, să introduci următoarele:

8; UPDATE table_name SET filed=123456 --

Asta ar transforma prima interogare în:

SELECT * FROM news WHERE id=8; UPDATE table_name SET filed=123456 -- and active=1

Cu ; se închide prima interogare, iar cu — se comentează dacă a rămas ceva din prima interogare.

Comentarii

  • Îmi pare rău, dar depinde, dacă funcția de bază este mysql_query (php), de exemplu, aceasta nu acceptă interogări suprapuse. (sqlinjection.net/stacked-queries) –  > Por r00t.
  • @r00t, dacă cineva are de gând să injecteze o instrucțiune de inserție sau actualizare, așa ar trebui să se facă totuși, corect? Înțeleg că s-ar putea să nu fie posibil, în funcție de codul subiacent, dar nu știu o altă modalitate de a face acest lucru. –  > Por Abe Miessler.
  • @AbeMiessler : Da, sigur, dar răspunsul ar trebui să fie clar cu privire la faptul că nu este întotdeauna posibil să se facă UPDATE/DELETE/INSERT. OP a întrebat „cum pot efectua[…]” și răspunsul exact este : s-ar putea să poți face așa cum a spus pineappleman sau s-ar putea să nu poți face deloc. De asemenea, răspunsul presupune că cererea de bază este un SELECT, dar var GET ar putea fi utilizat și într-un UPDATE/DELETE/INSERT sau într-o procedură stocată etc., astfel încât răspunsul nu acoperă toate cazurile. –  > Por r00t.
  • @r00t OP a specificat că ar trebui să presupunem că „injecția SQL poate fi efectuată”. –  > Por TTT.
  • @TTTT : Da, dar nu pentru că „se poate realiza injecția SQL” se pot executa instrucțiuni INSERT, UPDATE ȘI DELETE… –  > Por r00t.