90sec@Joseph
case 'del': pe_token_match(); $tpl_name = pe_dbhold($_g_tpl); if ($tpl_name == 'default') pe_error('默认模板不能删除...'); if ($db->pe_num('setting', array('setting_key'=>'web_tpl', 'setting_value'=>$tpl_name))) { pe_error('模板正在使用中...'); } else { pe_dirdel("{$pe['path_root']}template/{$tpl_name}"); pe_success('模板删除成功!'); } break;
首先一个token防止csrf然后一个定义tpl_name的名字最后载入自定义的一个过滤函数
function pe_dbhold($str, $exc=array()) { if (is_array($str)) { foreach($str as $k => $v) { $str[$k] = in_array($k, $exc) ? pe_dbhold($v, 'all') : pe_dbhold($v); } } else { $str = $exc == 'all' ? mysql_real_escape_string($str) : mysql_real_escape_string(htmlspecialchars($str)); } return $str; }
看的出来是针对sql过滤的并未针对像跳目录等进行过滤或者处理,然后返回又进入了一个自定义的删除函数
function pe_dirdel($dir_path) { if (is_file($dir_path)) { unlink($dir_path); } else { $dir_arr = glob(trim($dir_path).'/*'); if (is_array($dir_arr)) { foreach ($dir_arr as $k => $v) { pe_dirdel($v, $type); } } @rmdir($dir_path); } }
懂php代码的都看的出来就是一个判断路径存在和文件夹或者文件存在的一个简单函数对我们的利用没有任何危害
demo测试
看的出来直接删除
第一个拿shell 自然就是咱们说的删除instak.ock 重装,不过太过于危险。我这里有官网权限 我这里直接给大家一个方法
http://127.0.0.1/admin.php?mod=moban&act=down&id=1
密码:loveme
一切都源自于看着收费的源码又不想花钱
官网漏洞我已经补,希望大家别去危害。
另外还有二次注入的利用点。这里就不多说了
评论 (0)