最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

mysql中的0引发的安全风险_MySQL

来源:懂视网 责编:小采 时间:2020-11-09 18:06:06
文档

mysql中的0引发的安全风险_MySQL

mysql中的0引发的安全风险_MySQL:bitsCN.com menzhi007mysql的比较运算,黑哥解释的很清楚,感谢下http:///database/201003/45294.html当mysql中执行where条件时 0可以作为通配符,来查询索引出数据。mysql> select username from users where userna
推荐度:
导读mysql中的0引发的安全风险_MySQL:bitsCN.com menzhi007mysql的比较运算,黑哥解释的很清楚,感谢下http:///database/201003/45294.html当mysql中执行where条件时 0可以作为通配符,来查询索引出数据。mysql> select username from users where userna

bitsCN.com

menzhi007

mysql的比较运算,黑哥解释的很清楚,感谢下

http:///database/201003/45294.html

当mysql中执行where条件时 0可以作为通配符,来查询索引出数据。

mysql> select username from users where username=0 limit 1;
+----------+
| username |
+----------+
| admin |
+----------+
1 row in set

早上又在同学机子上做了oracle和mssql 中的测试

比较不充分,比如应该拿字符串和数字比等等,大家自行测试下吧

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod


MSSQL中



最终我们只能在mysql中测试成功

实例程序中遇到的问题,当直接访问控制器的的方法,尤其用户名密码未提交值,将默认提交“0”,最终将直接导致直接绕过验证。

users.php Controllers中的代码

/*修补后首页登录框*/
function ajax_login_back() {
if($this->input->post(username)!="" && $this->input->post(password)!="") {//增加这句判断是否为空
echo $this->users_model->verify_user($this->input->post(username),$this->input->post(password));
} else {
redirect(articles,refresh);
}
}
//漏洞代码
function ajax_login() {
echo $this->users_model->verify_user($this->input->post(username),$this->input->post(password));//漏洞代码
}

users_model.php Models中的代码

public function verify_user($username, $password) {
$query = $this->db->where(username, $username);//
//$query = $this->db->where(password is not null);
$query = $this->db->where(password,$password);
$query = $this->db->get(users, 1);

if ($query->num_rows() == 1) {
$row = $query->row_array();
$data = array(
uid => $row[uid],
username => $row[username],
level => $row[level],
logged_in => TRUE
);

$this->session->set_userdata($data);
return 1;
} else {
return NULL;
}
}


前台 index.php Views中的代码

输出sql 语句测试
$sql = $this->_prep_query($sql);
return @mysql_query($sql, $this->conn_id);
}

默认执行的是如下语句


很明显,直接执行了,基于框架的程序容易造成此类风险。

woyigui同学说的不加引号会报错,这个应该是个合理的解释吧。

最后再次感谢亲爱的黑哥。

bitsCN.com

文档

mysql中的0引发的安全风险_MySQL

mysql中的0引发的安全风险_MySQL:bitsCN.com menzhi007mysql的比较运算,黑哥解释的很清楚,感谢下http:///database/201003/45294.html当mysql中执行where条件时 0可以作为通配符,来查询索引出数据。mysql> select username from users where userna
推荐度:
标签: 安全 安全性 风险
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top