http://www.cegtudor.hu/Alkategoria.aspx?varos=%C3%89rd&alkategoriaid=232&alkategorianev=kis%20%C3%A9s%20nagyker
Kimenet:
Input string was not in a correct format.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.FormatException: Input string was not in a correct format.
Source Error:
Line 28: mySqlCommand2.CommandText = “UPDATE kategoria SET latogatok = latogatok + 1 WHERE (kategoriaid LIKE @kategoriaid);”;
Line 29: mySqlCommand2.Parameters.Add(“@kategoriaid”, SqlDbType.Int);
Line 30: mySqlCommand2.Parameters[“@kategoriaid”].Value = Convert.ToInt32(LabelKid.Text);
Line 31: mySqlCommand2.ExecuteNonQuery();
Line 32: mySqlConnection2.Close();
Fura, mik vannak még a mai világban. Persze, mivel a paraméter int, nem egyszerű a dolog, de valószínűleg a többi rész is így van programozva.
UPDATE: baromságot beszéltem. Paraméteres a lekérdezés, teljesen jól van megcsinálva, így nem lehet injektálni. Elnézést, hogy pellengérre állítottam, szólok az ikreknek, hogy adjanak több időt aludni, addig is, nem blogolok több hülyeséget. :) Sorry.
Egy, ami nem szép, hogy debug módban van a kód, és a részletes hibaüzenetek látszanak kifelé. Ez is kiindulási alap lehet egy hacker részére.
Could you hire me? Contact me if you like what I’ve done in this article and think I can create value for your company with my skills.
LEAVE A COMMENT
6 COMMENTS
Ha jól látom az oldalon, aki fejlesztette, oktatja is.
Amúgy meg biztos megpályáztatták, és ez volt a legolcsóbb… (A feladatot pedig mindenki teljesítette: “… Az oldalon beírt paraméterek alapján a rendszer keresést hajt végre. A kategórián belül a látoagatásokat számolja…”)
Szia!
Nem szép (sőt baromi ronda, pl. megjelenítési rétegben minden), meg nem is jó a megoldás (using, like, …), de én itt nem látok lehetőséget sql code injection-ra. Elárulnád, hogy hol a lehetőség?
Attila
Integeren keresztül én se tudok injektálni, de ha ez az oldal így van megírva, az ilyen siteokon érdemes próbálkozni a többivel is, előbb-utóbb találsz olyat, ami stringet vár paramáterül, és akkor nyertél.
Ezt nem teljesen értem. Ha paraméteres sql-ed van, ahol string típusú a paraméter, akkor a framework nem intézi el a string escape-elését (jobb szót nem tudok rá, bocs)? Azaz ha jól tudom, akkor így sem tudsz sql code injectiont csinálni, csak akkor, ha kézzel rakod össze az sqlt, vagy rosszul tudom?
Másrészt abban igazad van, hogy ahol így van a site felépítve, ott még akár ez utóbbi eset is előfordulhat. Ezért is célszerű, hogyha megfelelő rétegeid vannak és a megfelelő helyeken(!) validálsz.
Másrészt kicsit furcsa, hogy ilyen részletes infót kiadnak egy hibáról. Ez az infó csak a fejlesztőnek, meg a crackernek hasznos, egy átlag felhasználónak bőven elég információt ad pl: az indexes hiba ablak is ( http://index.hu/kaz ).
Kaz: barom voltam, lsd update.