Как смоделировать XSS на этой странице входа - PullRequest
0 голосов
/ 04 марта 2020

Loginn. php

<html>
<head>
<title> Login </title>
</head>
<style>
    #footer {
   position:absolute;
   bottom:0;
   width:100%;
   height:60px;
}
</style>
<body>
<div class="container">
    <form method="post" action="logged.php">
        <div id="div_login">
            <h1>Login</h1>
            <div>
                <input type="text" class="textbox" id="txt_uname" name="txt_uname" placeholder="Username" />
            </div>
            <div>
                <input type="password" class="textbox" id="txt_pwd" name="txt_pwd" placeholder="Password"/>
            </div>
            <div>
                <input type="submit" value="Submit" name="but_submit" id="but_submit" />
            </div>
        </div>
        <div class='container' id='footer'>
    <h3>Leave us some feedback ! </h3>
    <div>
                <input type="text" class="textbox" id="txt_feedback" name="txt_feedback" placeholder="Feedback" />
            </div>
</div>
    </form>
</div>
</body>
</html>

Записано. php

<?php
include "configs.php";

if(isset($_POST['but_submit'])){

    $uname = mysqli_real_escape_string($con,$_POST['txt_uname']);
    $password = $_POST['txt_pwd'];
    $fback=$_POST['txt_feedback'];

    if ($uname != "" && $password != ""){

        $sql_query = "select count(*) as cntUser from users where username='".$uname."' and password='".$password."'";
        $result = mysqli_query($con,$sql_query);
        $row = mysqli_fetch_array($result);
        $sql = "UPDATE users SET feedback='$fback' WHERE username='".$uname."' and password='".$password."'";
        if ($con->query($sql) === TRUE) {
            echo "Record updated successfully";
        } else {
            echo "Error updating record: " . $con->error;
        }
        $count = $row['cntUser'];

        if($count > 0){
            $_SESSION['uname'] = $uname;
            header('Location: home.php');
        }else{
            echo "Invalid username and password";
        }

    }

}

Я хочу, чтобы поле ввода обратной связи было быть уязвимым для xss, так что я могу вызывать JavaScript окна предупреждений, предоставляя сценарии в качестве входных данных для поля. Как мне этого добиться? На данный момент, он просто переходит на домашнюю страницу, не вызывая никаких предупреждений. Я уже внедрил SQL инъекцию на этой странице, которая работает нормально.

1 Ответ

0 голосов
/ 10 марта 2020

Я так понимаю, вы используете это как учебное упражнение о том, как предотвратить XSS

Измените следующее:

echo "Invalid username and password";

на для достижения XSS:

echo "Invalid username:".$_POST['txt_uname']." and password";

Затем введите следующий текст в поле имени пользователя

<image src="x" onerror="alert('XSS')">

Для предотвращения XSS при отображении переменных, как я делал выше, вы должны обернуть переменные htmlentities (), как в следующем коде:

echo "Invalid username:".htmlentities($_POST['txt_uname'])." and password";

Это один из нескольких способов достижения XSS, поэтому лучше всего учиться на конкретных c сайтах, которые go, углубленно изучать различные методы и решения для предотвращения XSS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...