diff --git a/GameEngine/Admin/Mods/editAccess.php b/GameEngine/Admin/Mods/editAccess.php index 7a6a52a0..207c5ff6 100755 --- a/GameEngine/Admin/Mods/editAccess.php +++ b/GameEngine/Admin/Mods/editAccess.php @@ -33,10 +33,16 @@ $sessionaccess = $access['access']; if($sessionaccess != 9) die("

Access Denied: You are not Admin!

"); -$access = $_POST['access']; +// Cast + whitelist the access level. $_POST['access'] was injected raw into +// the UPDATE below (SQL injection). Only accept the values the admin form +// offers: 0=Banned, 2=Normal user, 8=Multihunter, 9=Admin. +$access = (int) $_POST['access']; +if (!in_array($access, array(0, 2, 8, 9), true)) { + die("Invalid access level"); +} -mysqli_query($GLOBALS["link"], "UPDATE ".TB_PREFIX."users SET - access = ".$access." +mysqli_query($GLOBALS["link"], "UPDATE ".TB_PREFIX."users SET + access = ".$access." WHERE id = ".$id."") or die(mysqli_error($database->dblink)); header("Location: ../../../Admin/admin.php?p=player&uid=".$id."");