来源:自学PHP网 时间:2015-04-17 10:15 作者: 阅读:次
[导读] 某文件对于从数据库中读取的变量未过滤,放入其他的sql语句中,造成二次sql注入文件\interface\public.php中:$ec_member_username_id = $this-member_cookieview(#39;userid#39;);if ($ec_member_usernam......
某文件对于从数据库中读取的变量未过滤,放入其他的sql语句中,造成二次sql注入
文件\interface\public.php中:
$ec_member_username_id = $this->member_cookieview('userid'); if ($ec_member_username_id) { $rsMember = $this->get_member_attvalue($ec_member_username_id); } $userid = $ec_member_username_id ? $ec_member_username_id : 0; $name = $rsMember['alias'] ? $rsMember['alias'] : ''; $sex = $rsMember['sex'] ? $rsMember['sex'] : 0; $tel = $rsMember['tel'] ? $rsMember['tel'] : ''; $address = $rsMember['address'] ? $rsMember['address'] : ''; $db_field = 'mlvid,userid,name,sex,email,tel,address,isclass,addtime'; $db_values = "$mlvid,$userid,'$name',$sex,'$email','$tel','$address',1,$addtime"; $this->db->query('INSERT INTO ' . $db_table . ' (' . $db_field . ') VALUES (' . $db_values . ')');
关键代码:$address = $rsMember['address'] ? $rsMember['address'] : '';
$address是从数据库中获取到当前用户个人信息的详细地址,字段address在数据库中为varchar类型,最长字符数255
字段address可以被用户控制,构造特殊的sql语句
先修改个人信息:
再访问如下url:
http://127.0.0.1/index.php?ac=public&at=invite&mlvid=999&email=ipp@126.com
输出sql语句:
修复方案:
过滤。。。
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com