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
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论