webForumDet fria alternativet

Sql Injection, Mysql, Trappable error

1 svar · 395 visningar · startad av l-boy

l-boyMedlem sedan juli 2003221 inlägg
#1
sql = "SELECT username, password "
sql = sql & " FROM users "
sql = sql & " WHERE userId = '"& request.querystring("userId") &"';"
rs.open sql, db
if not rs.eof then
  do while not rs.eof	
    response.write(rs("username") &";"& rs("password") & chr(13))
    rs.movenext
  loop
end if

Ovanstående kod är som synes helt oskyddad mot sql-injections. Om t.ex:

request.querystring("userId") = "1' or 1=1'"

så får jag ut en massa användare. Om jag däremot vill göra något annat dumt, tex drop table, så försökte jag med följande:

request.querystring("userId") = "1'; drop table documents; select * from users where username like '%"

Med ovanstående kod får jag ett felmeddelande: A trappable error (C0000005) occurred in an external object. The script cannot continue running.

Om jag istället kör sql-queryin som genereras ovanför och kör den i Php-myadmin så raderas tabellen documents korrekt. Min fråga - varför går detta ej att göra direkt i webbläsaren?

l-boyMedlem sedan juli 2003221 inlägg
#2

Verkar inte som att jag kan köra två ;-separerade kommandon över huvudtaget. Är detta någon inställning i MySQL?

(Och nej, har ingen ond uppsåt med detta. Tvärt om - skall eliminera möjligheterna att någon ställer till problem)

129 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)