<?phprequire_once("common.php");require_once("config.php");if(isset($tem)){require("template/$tem.php");}else{require("template/index.php");}if(isset($_POST['username'])&&$_POST['password']){$sql_="select * from users where username='$username' and password='$password'";$db=newsql();$row=$db->getone($sql_);if(!empty($row)){session_start();$_SESSION['username']=$username;header("Location: info.php");exit();}}
<?phpextract($_GET);require_once("common.php");require_once("config.php");session_start();if(is_numeric($role)){var_dump($_SESSION);$username=$_SESSION['username'];$role=addslashes($role);$sql_="update users set role=$role where username='$username'";$db=newsql();$db->register($sql_);}
这段代码代码有有点意思了,extract($_GET);,这表示之前已存在的变量也可以被他覆盖,根据if(is_numeric($role))和$sql_ = "update users set role=$role where username='$username'";两端代码可以判断,注入点很有可能就是这个$role了, is_numeric我们可以通过16进制绕过,但是我们之前可以看到common.php中是已经声明了$role这个变量的,也就是说我们无法通过edit_info.php这个页面直接注入。