变量覆盖
两处注入、 且每一种都在多处存在。

第一处在2shou/post.php中

为1时进入。

if($webdb[post_htmlType]==1){ //以下是为了兼容?方式POST数据 $detail=explode("&",substr(strstr($WEBURL,'?'),1));//直接控制 $WEBURL是PHP_SELF来的 foreach($detail AS $value){ $d=explode("=",$value); $d[0] && $$d[0]=addslashes($d[1]);//这里很明显的一个变量覆盖 } if($action){ unset($job); } } //这里覆盖掉$pre来注入 $rs=$db->get_one("SELECT admin FROM {$pre}city WHERE fid='$city_id'");




 

q1.jpg





成功出数据。



demo测试



https://life5.qibosoft.com/2shou/post.php?pre=xxx


 

q2.jpg





______________________________________________________________________



第二处



在zhuangxiu/list.php中


if(!$fid&&$webdb[Info_htmlType]==2){ //为2时进入 $detail=explode("-",$Fid);//$Fid 伪全局直接控制 $array=array_flip($Fid_db[dir_name]); $fid=$array[$detail[0]]; if($detail[1]){ for($i=1;$i<count($detail) ;$i++ ){ $_GET[$detail[$i]]=$$detail[$i]=str_replace(array('#@#','#!#'),array('-','/'),$detail[++$i]);// 这里又是一个变量覆盖。 } } if($zone_street){ $detail=explode("-",$zone_street); $array=array_flip($zone_DB['dirname']); $zone_id=$array[$detail[0]]; if($detail[1]){ $array=array_flip($street_DB['dirname']); $street_id=$array[$detail[1]]; } } }





导致了可以覆盖掉了$pre。



这两处变量覆盖 在多个文件中都存在。 都修改下把。

q1.jpg

解决方案:

修改变量覆盖的东西。