Php 有没有办法在这个开源CBT上注入SQL

Php 有没有办法在这个开源CBT上注入SQL,php,sql,sql-injection,cbt,Php,Sql,Sql Injection,Cbt,所以我的学校用基于计算机的CBT测试做了一个在线测试,但我发现了一些我认为可能相当危险的错误。这是登录文件中的示例代码 $username = $_POST['username']; $password = $_POST['password']; $siswaQ = mysqli_query($koneksi, "SELECT * FROM siswa WHERE username='$username'"); if($username<

所以我的学校用基于计算机的CBT测试做了一个在线测试,但我发现了一些我认为可能相当危险的错误。这是登录文件中的示例代码

$username = $_POST['username'];
$password = $_POST['password'];
        $siswaQ = mysqli_query($koneksi, "SELECT * FROM siswa WHERE username='$username'");
        if($username<>"" and $password<>""){
        if(mysqli_num_rows($siswaQ)==0) {
            echo "td";
        } else {
            $siswa = mysqli_fetch_array($siswaQ);
            $ceklogin=mysqli_num_rows(mysqli_query($koneksi, "select * from login where id_siswa='$siswa[id_siswa]'"));
            
                if($password<>$siswa['password']) {
                    echo "nopass";
                } else {
                    if($ceklogin==0){
                        $_SESSION['id_siswa'] = $siswa['id_siswa'];
                        mysqli_query($koneksi, "INSERT INTO log (id_siswa,type,text,date) VALUES ('$siswa[id_siswa]','login','masuk','$tanggal $waktu')");
                        mysqli_query($koneksi, "INSERT INTO login (id_siswa) VALUES ('$siswa[id_siswa]')");
                        echo "ok";
                    }else{
                        echo "nologin";
                    }
                }
            
        }
        }
我从我的学校正在使用的CBT应用程序的github获得了上面的代码

我发现他们的应用程序使用的代码与github的开源版本相同,然后 我查看了代码,发现用户名和密码参数没有经过消毒

我联系了cbt应用程序的所有者,他们不相信并且非常有信心上述代码不能被利用,这是真的吗?即使参数未被清理,也不能利用此代码?如果这不是真的,我是否可以尝试利用任何漏洞来渗透此web应用程序

我在web应用程序上做了一些测试,并尝试了基本SQL注入'or=',但没有成功,响应为nopass,但当我喜欢在用户名和密码表单(如abcd/1234)上添加随机内容时,响应为td而不是no pass?我很困惑

请记住,我完全同意对他们的web应用程序进行开发和测试


我想不出这篇文章的正确标题,也许有人可以帮我编辑标题

,你可以使用参数化的准备语句,而不是手动生成查询。它们由或提供。永远不要相信任何形式的输入!即使是受信任的用户$用户名=';从siswa中删除,其中1或用户名=';根本没有保护措施。它们必须使用参数化查询。这是如此的不安全,以至于一个10岁的孩子可以在10分钟内破解它。一个简单的测试或1;。此外,切勿以明文或使用MD5/SHA1存储密码!只存储使用PHP创建的密码散列,然后可以验证。看看这篇文章:了解更多。这里是你最近的一个问题