Wysłany: 2016-08-10, 11:00
eject
kurdebele
Wiek: 30 Na forum: 3659 dni Posty: 182
Nick w MP: EjecT
Piwa : 2456
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 > 0 and kwota > getPlayerMoney ( client ) then 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 ( client , kwota )
exports [ "yc-mysql" ]: ustawRekord ( "UPDATE ogrpg_users SET bank_money=bank_money+" ..( tonumber ( kwota ) or 0 ).. " WHERE id=" .. tonumber ( dbid ).. " LIMIT 1" )
-- triggerEvent ( "broadcastCaptionedEvent" , client , getPlayerName ( client ).. " wp?aca pieni?dze do bankomatu" , 3 , 20 , true )
outputChatBox ( "Wplaciles pieni?dze" , client , 255 , 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!" , client , 255 , 0 , 0 )
-- triggerClientEvent ( client , "onAnnouncement3" , root , "Nie masz tyle ?rodk?w na koncie!" , 5 )
return
end
outputChatBox ( "Wyplaciles pieni?dze" , client , 255 , 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 ( client , math . abs ( kwota ))
end
end )
Wysłany: 2016-08-10, 11:53
Brzysiek
Skrypter pralek
Wiek: 27 Na forum: 5198 dni Posty: 488
Nick w MP: Brzysiek
Piwa : 1034
Nie mo?na bo warto?ci wpisywane do bazy s? zmieniane na liczby przez tonumber().
W najgorszym wypadku do bazy nic nie zostanie wpisane.
Wysłany: 2016-08-10, 12:00
eject
kurdebele
Wiek: 30 Na forum: 3659 dni Posty: 182
Nick w MP: EjecT
Piwa : 2456
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 ( pass ) then
setPlayerName ( client , login )
setCameraTarget ( client , client )
setElementData ( client , "UID" , result [ 1 ]. id )
triggerClientEvent ( client , "logging:result" , resourceRoot , true , nil )
else
triggerClientEvent ( client , "logging:result" , resourceRoot , false , "Podane dane s? nieprawid?owe." )
end
else
triggerClientEvent ( client , "logging:result" , resourceRoot , false , "Podany login nie istnieje w bazie." )
end
end )
Wysłany: 2016-08-10, 12:17
Brzysiek
Skrypter pralek
Wiek: 27 Na forum: 5198 dni Posty: 488
Nick w MP: Brzysiek
Piwa : 1034
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.
Wysłany: 2016-08-10, 12:28
eject
kurdebele
Wiek: 30 Na forum: 3659 dni Posty: 182
Nick w MP: EjecT
Piwa : 2456
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
Tagi: czy :: ten :: kod :: mozna :: wykonac :: sql :: injection
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: