为了账号安全,请及时绑定邮箱和手机立即绑定

常见sql注入原理详解!

标签:
PHP MySQL

图片描述
/*数据库配置/
$config = ['hostname'=>"localhost", 'port'=>"3306", 'username'=>"root",'password'=>'','db'=>'sql'];

/*接收参数/
$id = $_GET['id']?$_GET['id']:"";

if(empty($id)){
echo "article is not def"
}

/*链接数据库/
$mysqli = new \mysqli($config['hostname'],$config['username'],$config['password'],$config['db']);

/*设置编码/
$mysqli->set_charset("utf8");

url数字注入结果测试
我们访问url:http://localhost/mysql/index.php?id=1

结果展示:
array (size=2) 'article_id' => string '1' (length=1) 'title' => string '思梦php编写:PHP操作Redis详解案例' (length=44)

(1)/当我们在在url上稍作修改时:
http://localhost/mysql/index.php?id=1‘ //加一个单引号
这样你的sql语句就会报错

(2)我们再次修改url的时候
http://localhost/mysql/index.php?id=-1 or 1=1 //后面参数修改成这样

结果展示了所有的文章列表
D:\wamp\www\mysql\index.php:11:array (size=2) 'article_id' => string '1' (length=1) 'title' => string '思梦php编写:PHP操作Redis详解案例' (length=44)
D:\wamp\www\mysql\index.php:11:array (size=2) 'article_id' => string '2' (length=1) 'title' => string 'Mysql存储过程从0开始(上)' (length=36)
D:\wamp\www\mysql\index.php:11:array (size=2) 'article_id' => string '3' (length=1) 'title' => string '思梦php编写:PHP排序的几种方法' (length=42).............

图片描述

2、表单注入,主要利用sql语句的注释

$username = $_POST['username']?$_POST['username']:"";
$password = $_POST['password']?$_POST['password']:"";
$sql = "select * from tb_member where account='$username'AND password='$pass'";
$res = $mysqli->query($sql);
$row = $res->fetch_assoc();
if($row){
echo "登录成功!";
}else{
echo "账号密码错误!";
}
正常输入
图片描述
打印:登录成功!
我们简单修改一下
图片描述
打印:登录成功!

图片描述

原理:首先使用单引号结束sql语句,然后加#注释后面的sql语句
图片描述
同理另一种方式为
图片描述
打印:登录成功!
原理:首先使用单引号结束sql语句,然后加(-- )注释后面的sql语句
图片描述
图片描述

点击查看更多内容
21人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
PHP开发工程师
手记
粉丝
85
获赞与收藏
1150

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消