В обход логина php
У меня есть 2 независимых фрагмента кода PHP, и я должен обойти логин для каждого.
<?php
//$pass = "8809834433" // OLD
$pass = "a343545435"; // NEW for Update
if ((int)$_GET['pass'] == $pass) {
echo "You are now logged in as admin!";
} else {
die("invalid Login!");
}
?>
а также
<h1>Login</h1>
<?php
// $_GET['jsonString'] = '{"user":"admin","pass":"4fdsfj209dj"}';
$jsonString = $_GET['jsonString'];
$data=json_decode($jsonString, true);
$username = "admin";
$password = "4fdsfj209dj";
if($data['user']==$username && $data['pass']==$password) {
echo "You are now logged in!";
}else{
die('wrong Password or Username!');
}
?>
Есть идеи, как это решить?
2 ответа
Я не уверен, в чем суть этого вопроса, но если вы укажете следующий JSON в своем GET-запросе, то вы будете "авторизованы"
{"user":true,"pass":true}
Первый фрагмент:
Если параметр $_GET['pass']
установлен в 0
, или же
false
тогда логин будет обойден. Это связано с (int) приведением пароля по умолчанию, который оценивается как 0
потому что это строка
Второй фрагмент:
Как сказал Крис, проходя мимо {"user":true,"pass":true}
в запросе обходит логин.