<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</HEAD>
<BODY>
<?php
$user = $_POST['user'];
$pass = $_POST['pass'];
$link = mysqli_connect("serwerxxxxx.home.pl", "xxxxxxx_sqlin", "HasL0o", "xxxxxxx_sqlin");
if (!$link) {
echo"Błąd: " . mysqli_connect_errno
() . " " . mysqli_connect_error
(); }
mysqli_query($link, "SET NAMES 'utf8'");
$result = mysqli_query($link, "SELECT * FROM users WHERE (user='$user') AND (pass='$pass')");
//echo '<pre>' . print_r($result) . '</pre>';
$rekord = mysqli_fetch_array($result);
if (!$rekord) {
mysqli_close($link);
echo "Brak użytkownika o takim loginie !"; } else {
if ($rekord['pass'] == $pass) {
echo "Logowanie Ok. User: {$rekord['user']}. Hasło: {$rekord['pass']}"; } else {
mysqli_close($link);
echo "Nie udało się zalogować. User: {$rekord['user']}. Hasło: {$rekord['pass']}"; }
}
?>
</BODY>
</HTML>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> Formularz logowania
<form method="post" action="weryfikuj.php"> Login:
<input type="text" name="user" maxlength="20" size="20"><br> Hasło:
<input type="text" name="pass" maxlength="20" size="20"><br> <input type="submit" value="Send"/>
CREATE TABLE `users` (
`id` smallint(6) NOT NULL,
`user` varchar(128) COLLATE utf8_polish_ci NOT NULL,
`pass` varchar(128) COLLATE utf8_polish_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
ALTER TABLE `users`
ADD PRIMARY KEY (`id`);
ALTER TABLE `users`
MODIFY `id` smallint(6) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
INSERT INTO `users` (`id`, `user`, `pass`) VALUES
(1, 'user1', 'pass1'),
(2, 'user2', 'pass2');
Mam rzekomo banalnie proste zadanie z którym nie daje sobie rady. Nie jestem w stanie wstrzyknąć kodu SQL przez pole input. Zadanie polega na zalogowaniu się nie znając hasła ani loginu. Jak rozumiem powinienem się zalogować wpisując w oba pola ciąg znaków
1 OR '1' = '1
co powinno dać w efekcie
SELECT * FROM users WHERE (user='1 OR '1' = '1') AND (pass='1 OR '1' = '1')")
Rozumiem że metoda ta polega na wprowadzeniu w przypadku tego zadania kodu pomiędzy apostrofy (zmienna $user i $pass) dodatkowego kodu SQL. Czyli pokaż wszystkich użytkowników gdzie hasło ma wartość 1 lub 1 = 1 co powinno dać true i dać się zalogować niestety walczę z tym bezskutecznie
Ten post edytował Delleg 3.02.2017, 18:56:52