漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2015-089892
漏洞标题:HDWIKI鸡肋SQL注入(PHP弱类型实例)
相关厂商:互动在线(北京)科技有限公司
漏洞作者: story
提交时间:2015-01-04 17:53
修复时间:2015-04-02 10:23
公开时间:2015-04-02 10:23
漏洞类型:SQL注射漏洞
危害等级:低
自评Rank:5
漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2015-01-04: 细节已通知厂商并且等待厂商处理中
2015-01-09: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2015-03-05: 细节向核心白帽子及相关领域专家公开
2015-03-15: 细节向普通白帽子公开
2015-03-25: 细节向实习白帽子公开
2015-04-02: 细节向公众公开
简要描述:
见drops中@小飞发了一篇文章:http://drops.wooyun.org/tips/4483
我一直认为没有实例的文章不是好文章,于是来帮他加个实例,由PHP弱类型造成的SQL注入,非常典型。
为了不拉低大号的平均rank,小号交起~~嘿
详细说明:
/control/list.php 109行
从GET里获得doctype,$doctype = $this->get[2];,进入一个switch语句。
我们看到后面这句话:$count=$this->db->fetch_total('focus',"type=$doctype");,是直接将$doctype带入SQL语句了的,只要这个switch语句不影响$doctype的值,后面就能注入了。
我们看到case 2和case 3的结果都不会改变$doctype的值,但如果进入default是会将$doctype改为1的。
不是我们传入非2或3的值都会进入default么?这样怎么注入?
这里就犯了一个“弱类型”的错误,当一个字符串和一个数字比较的时候,是会先将字符串intval后再与数字比较。
所以我传入doctype是2xxxx的时候,实际上是会进入case 2而不是default。出了switch语句后,doctype的值还是2xxxx,而不是2.
所以之后的$count=$this->db->fetch_total('focus',"type=$doctype");,$doctype带入SQL语句造成注入。
不过鸡肋的是,hdwiki对GET变量有拦截,我绕不过。所以……仅供学习
漏洞证明:
修复方案:
intval
版权声明:转载请注明来源 story@乌云
漏洞回应
厂商回应:
危害等级:无影响厂商忽略
忽略时间:2015-04-02 10:23
厂商回复:
最新状态:
暂无