### 简要描述: 刚从官网首页上面下载的。 比较苦逼。 首页上好像没更新文件? 本来还以为可以直接提升自己为管理的, 不过测试测试 蛋疼的多行 让我放弃了 老老实实来注入把。。 ### 详细说明: 在hy/member/homepage_ctrl/contracrus.php中 ``` @extract($_POST); if($qy_contact_email&&!ereg("^[-a-zA-Z0-9_\.]+\@([0-9A-Za-z][0-9A-Za-z-]+\.)+[A-Za-z]{2,5}$",$qy_contact_email)){ showerr('邮箱不符合规则'); } elseif($qy_website&&!eregi("^http:",$qy_website)){ showerr('网址有误,必须是http://开头'); }elseif($qy_postnum&&!eregi("^([0-9]{6})$",$qy_postnum)){ showerr('邮政编码有误'); }elseif($qy_contact_mobile&&!eregi("^1([0-9]{10})$",$qy_contact_mobile)){ showerr('手机号码有误'); }elseif($qq&&!eregi("^([0-9]{5,11})$",$qq)){ showerr('QQ号码有误'); }elseif($msn&&!ereg("^[-a-zA-Z0-9_\.]+\@([0-9A-Za-z][0-9A-Za-z-]+\.)+[A-Za-z]{2,5}$",$msn)){ showerr('msn不符合规则'); } $db->query("UPDATE `{$_pre}company` SET `qy_contact`='$qy_contact', `qy_contact_zhiwei`='$qy_contact_zhiwei', `qy_contact_tel`='$qy_contact_tel', `qy_contact_fax`='$qy_contact_fax', `qy_contact_mobile`='$qy_contact_mobile', `qy_website`='$qy_website',...
### 简要描述: 刚从官网首页上面下载的。 比较苦逼。 首页上好像没更新文件? 本来还以为可以直接提升自己为管理的, 不过测试测试 蛋疼的多行 让我放弃了 老老实实来注入把。。 ### 详细说明: 在hy/member/homepage_ctrl/contracrus.php中 ``` @extract($_POST); if($qy_contact_email&&!ereg("^[-a-zA-Z0-9_\.]+\@([0-9A-Za-z][0-9A-Za-z-]+\.)+[A-Za-z]{2,5}$",$qy_contact_email)){ showerr('邮箱不符合规则'); } elseif($qy_website&&!eregi("^http:",$qy_website)){ showerr('网址有误,必须是http://开头'); }elseif($qy_postnum&&!eregi("^([0-9]{6})$",$qy_postnum)){ showerr('邮政编码有误'); }elseif($qy_contact_mobile&&!eregi("^1([0-9]{10})$",$qy_contact_mobile)){ showerr('手机号码有误'); }elseif($qq&&!eregi("^([0-9]{5,11})$",$qq)){ showerr('QQ号码有误'); }elseif($msn&&!ereg("^[-a-zA-Z0-9_\.]+\@([0-9A-Za-z][0-9A-Za-z-]+\.)+[A-Za-z]{2,5}$",$msn)){ showerr('msn不符合规则'); } $db->query("UPDATE `{$_pre}company` SET `qy_contact`='$qy_contact', `qy_contact_zhiwei`='$qy_contact_zhiwei', `qy_contact_tel`='$qy_contact_tel', `qy_contact_fax`='$qy_contact_fax', `qy_contact_mobile`='$qy_contact_mobile', `qy_website`='$qy_website', `qy_contact_email`='$qy_contact_email', `qy_postnum`='$qy_postnum', `qy_address`='$qy_address', `qq`='$qq', `msn`='$msn', `skype`='$skype', `ww`='$ww', `city_id`='{$city_id}', `gg_maps`='$gg_maps' WHERE uid='$uid'"); ``` 这里@extract($_POST); 变量覆盖。 一开始想的是把update的这表前缀给覆盖了。 然后update qb_memberdata 给自己提升为管理。 但是这可恶的多行。 # -- 只能做单行注释 `qy_contact`='$qy_contact', `qy_contact_zhiwei`='$qy_contact_zhiwei', 没办法注释掉这下面的这些, 用/*的话 我测试了必须还在最后加上*/。。。 用换行也失败了。。 看来只有老老实实来注入了。 UPDATE `qibo_hy_company` SET `qy_contact`='', `qy_contact_zhiwei`='', `qy_contact_tel`='', 因为无法注释掉后面的 所以只有想办法来补全语句来注入 但是因为后面的这个set qy_contact 只是在表company里面才有 所以还是得让$_pre为这个表。 语句大概为这样的。 首先覆盖掉$_pre 让其为qibo_hy_company 此时之星的语句为 UPDATE `qibo_hy_company_company` SET `qy_contact`='', `qy_contact_zhiwei`='', `qy_contact_tel`='', 然后先闭合第一个反引号 然后单行注释掉_company` SET UPDATE `qibo_hy_company`#_company` SET `qy_contact`='', 最后自己补一个。UPDATE `qibo_hy_company` SET qy_contact=xx#_company` SET `qy_contact`='', 可以注入了。 ### 漏洞证明: [<img src="https://images.seebug.org/upload/201405/2319552113b902bab366cd27053dc23ee378286e.jpg" alt="q1.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201405/2319552113b902bab366cd27053dc23ee378286e.jpg)