Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2016-08-10, 11:00


eject

kurdebele






Wiek: 30
Na forum: 3659 dni
Posty: 182
Nick w MP: EjecT

Piwa: 2456

Respekt: 85,8

Ostrzeżeń: 60%
Witam mam na swoim serverze kod bankomatu i troche sie boje ze mozna to zaatakowa?
Czy mozna wykonac sqlinjection na ten kod ?
addEvent("doATMOperation"true)
addEventHandler("doATMOperation"resourceRoot, function(kwota)
    -- kwota dodatnia wplata
    -- kwota ujemna wyplata
    if kwota>and kwota>getPlayerMoney(clientthen return end -- komunikat bledu po stronie klienta
    local dbid=getElementData(client,"UID")
    if not dbid then return end -- nie powinno sie zdarzyc
    if kwota>0 then
        if getPlayerMoney(client)<kwota then return end
        takePlayerMoney(clientkwota)
        exports["yc-mysql"]:ustawRekord("UPDATE ogrpg_users SET bank_money=bank_money+"..(tonumber(kwota) or 0).." WHERE id="..tonumber(dbid).." LIMIT 1")
        --triggerEvent("broadcastCaptionedEvent"clientgetPlayerName(client).." wp?aca pieni?dze do bankomatu"320true)
        outputChatBox("Wplaciles pieni?dze"client255,0,0)
    elseif kwota<0 then
        local sr=exports["yc-mysql"]:pobierzRekord("SELECT `bank_money` FROM `ogrpg_users` WHERE id="..tonumber(dbid).." LIMIT 1")
        if not sr or not sr.bank_money then return end -- nie opwinno sie wydarzyc
        sr.bank_money=tonumber(sr.bank_money)
        if (sr.bank_money<math.abs(kwota)) then
            outputChatBox("Nie masz tyle ?rodk?w na koncie!"client255,0,0)
--            triggerClientEvent(client,"onAnnouncement3"root"Nie masz tyle ?rodk?w na koncie!"5)
            return
        end
        outputChatBox("Wyplaciles pieni?dze"client255,0,0)
        exports["yc-mysql"]:ustawRekord("UPDATE ogrpg_users SET bank_money=bank_money-"..math.abs(tonumber(kwota)).." WHERE id="..tonumber(dbid).." LIMIT 1")
        givePlayerMoney(clientmath.abs(kwota))
    end
    

end)


Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-08-10, 11:53


Brzysiek

Skrypter pralek






Wiek: 27
Na forum: 5198 dni
Posty: 488
Nick w MP: Brzysiek

Piwa: 1034

Respekt: 360
Respekt: 360Respekt: 360Respekt: 360Respekt: 360

Nie mo?na bo warto?ci wpisywane do bazy s? zmieniane na liczby przez tonumber().
W najgorszym wypadku do bazy nic nie zostanie wpisane.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-08-10, 12:00


eject

kurdebele






Wiek: 30
Na forum: 3659 dni
Posty: 182
Nick w MP: EjecT

Piwa: 2456

Respekt: 85,8

Ostrzeżeń: 60%
Brzysiek, a na moje logowanie ?
addEvent("logging:checkAccount"true)
addEventHandler("logging:checkAccount"resourceRoot, function(login,pass)
    local result=exports["yc-mysql"]:pobierzRekord("SELECT * FROM og_users WHERE login=?"login)
    if result and #result > 0 then
        if result[1].login == login and result[1].pass == md5(passthen
            setPlayerName(clientlogin)
            setCameraTarget(client,client)
            setElementData(client"UID"result[1].id)
            triggerClientEvent(client"logging:result"resourceRoottruenil)
        else
            triggerClientEvent(client"logging:result"resourceRootfalse"Podane dane s? nieprawid?owe.")
        end
    else
        triggerClientEvent(client"logging:result"resourceRootfalse"Podany login nie istnieje w bazie.")
    end
end)


Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-08-10, 12:17


Brzysiek

Skrypter pralek






Wiek: 27
Na forum: 5198 dni
Posty: 488
Nick w MP: Brzysiek

Piwa: 1034

Respekt: 360
Respekt: 360Respekt: 360Respekt: 360Respekt: 360

Je?li funkcja pobierzRekord w yc-mysql korzysta z funkcji MTA do obs?ugi bazy danych (zaczynaj?ce si? na dbCo?) to wtedy jest bezpieczne.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-08-10, 12:28


eject

kurdebele






Wiek: 30
Na forum: 3659 dni
Posty: 182
Nick w MP: EjecT

Piwa: 2456

Respekt: 85,8

Ostrzeżeń: 60%
Brzysiek, Kody funkcji

function ustawRekord(...)
    if not {...} then return end
    local query=dbExec(DBHandler, ...)
    return query
end

function pobierzRekord(...)
    if not {...} then return end
    local query=dbQuery(DBHandler, ...)
    local result=dbPoll(query, -1)
    return result
end


Postaw piwo autorowi tego posta
 

 
Tagi: czy :: ten :: kod :: mozna :: wykonac :: sql :: injection
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku