本文章來給大家介紹PHPCMS 2008 最新漏洞圖文測試詳解,有需要了解的同學可進入參考參考。
Phpcms2008 是一款基於 PHP+Mysql 架構的網站內容管理系統,也是一個開源的 PHP 開發平台。Phpcms 采用模塊化方式開發,功能易用便於擴展,可面向大中型站點提供重量級網站建設解決方案。3年來,憑借 Phpcms 團隊長期積累的豐富的Web開發及數據庫經驗和勇於創新追求完美的設計理念,使得 Phpcms 得到了近10萬網站的認可,並且越來越多地被應用到大中型商業網站。
0x02 寫在前面的話$dbclass = 'db_'.DB_DATABASE; require $dbclass.'.class.php'; $db = new $dbclass; $db->connect(DB_HOST, DB_USER, DB_PW, DB_NAME, DB_PCONNECT, DB_CHARSET); require 'session_'.SESSION_STORAGE.'.class.php'; $session = new session(); session_set_cookie_params(0, COOKIE_PATH, COOKIE_DOMAIN); if($_REQUEST) { if(MAGIC_QUOTES_GPC) { $_REQUEST = new_stripslashes($_REQUEST); if($_COOKIE) $_COOKIE = new_stripslashes($_COOKIE); extract($db->escape($_REQUEST), EXTR_SKIP); } else { $_POST = $db->escape($_POST); $_GET = $db->escape($_GET); $_COOKIE = $db->escape($_COOKIE); @extract($_POST,EXTR_SKIP); @extract($_GET,EXTR_SKIP); @extract($_COOKIE,EXTR_SKIP); } if(!defined('IN_ADMIN')) $_REQUEST = filter_xss($_REQUEST, ALLOWED_HTMLTAGS); if($_COOKIE) $db->escape($_COOKIE); } //echo QUERY_STRING; if(QUERY_STRING && strpos(QUERY_STRING, '=') === false && preg_match("/^(.*).(htm|html|shtm|shtml)$/", QUERY_STRING, $urlvar)) { //var_dump($urlvar[1]); //echo 'test'; parse_str(str_replace(array('/', '-', ' '), array('&', '=', ''), $urlvar[1])); }這裡的話首先實例化了這個數據庫,產生了一個$db資源句柄,他是用來操作數據庫的
if(QUERY_STRING && strpos(QUERY_STRING, '=') === false && preg_match("/^(.*).(htm|html|shtm|shtml)$/", QUERY_STRING, $urlvar)) { //var_dump($urlvar[1]); //echo 'test'; parse_str(str_replace(array('/', '-', ' '), array('&', '=', ''), $urlvar[1])); }看看這裡?
define('HTTP_REFERER', isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''); define('SCRIPT_NAME', isset($_SERVER['SCRIPT_NAME']) ? $_SERVER['SCRIPT_NAME'] : preg_replace("/(.*).php(.*)/i", "\1.php", $_SERVER['PHP_SELF'])); define('QUERY_STRING', safe_replace($_SERVER['QUERY_STRING']));這裡有個過濾,但是不影響
$db->query("UPDATE ".DB_PRE."ads SET `clicks`=clicks+1 WHERE adsid=".$ads['adsid']); $info['username'] = $_username; $info['clicktime'] = time(); $info['ip'] = IP; $info['adsid'] = $id; $info['referer'] = HTTP_REFERER; $year = date('ym',TIME); $table = DB_PRE.'ads_'.$year; $table_status = $db->table_status($table); //echo 'test'; if(!$table_status) { include MOD_ROOT.'include/create.table.php'; } $db->insert($table, $info);注意這裡的HTTP_REFERER這個常量
function insert($tablename, $array) { $this->check_fields($tablename, $array); return $this->query("INSERT INTO `$tablename`(`".implode('`,`', array_keys($array))."`) VALUES('".implode("','", $array)."')"); //echo "INSERT INTO `$tablename`(`".implode('`,`', array_keys($array))."`) VALUES('".implode("','", $array)."')"; }所以你懂的