在这篇文章中,我们将带领您了解PHPCMS2008最新漏洞demo测试详解_PHP教程的全貌,包括phpcms漏洞利用的相关情况。同时,我们还将为您介绍有关BackupSQLServer2008R2R
在这篇文章中,我们将带领您了解PHPCMS 2008 最新漏洞demo测试详解_PHP教程的全貌,包括phpcms漏洞利用的相关情况。同时,我们还将为您介绍有关Backup SQL Server 2008 R2 Restore on SQL 2008、c# – 从一个DataBase(sql server 2008)到具有不同架构的另一个db(sql server 2008)的传输数据的最佳方式、CMS系统:PHPCMS V9 /phpcms/modules/member/index.php phpcms注入漏洞修复补丁、DBCC大全集之(适用版本MS SQLServer 2008 R2)---DBCC CHECKIDENT在 SQL Server 2008 R2 中检查指定表的当前标识值,如有必要,则更改标识值的知识,以帮助您更好地理解这个主题。
本文目录一览:- PHPCMS 2008 最新漏洞demo测试详解_PHP教程(phpcms漏洞利用)
- Backup SQL Server 2008 R2 Restore on SQL 2008
- c# – 从一个DataBase(sql server 2008)到具有不同架构的另一个db(sql server 2008)的传输数据的最佳方式
- CMS系统:PHPCMS V9 /phpcms/modules/member/index.php phpcms注入漏洞修复补丁
- DBCC大全集之(适用版本MS SQLServer 2008 R2)---DBCC CHECKIDENT在 SQL Server 2008 R2 中检查指定表的当前标识值,如有必要,则更改标识值
PHPCMS 2008 最新漏洞demo测试详解_PHP教程(phpcms漏洞利用)
本文章来给大家介绍
phpcms2008 是一款基于 php+mysql 架构的网站内容管理系统,也是一个开源的 php 开发平台。phpcms 采用模块化方式开发,功能易用便于扩展,可面向大中型站点提供重量级网站建设解决方案。3年来,凭借 phpcms 团队长期积累的丰富的web开发及数据库经验和勇于创新追求完美的设计理念,使得 phpcms 得到了近10万网站的认可,并且越来越多地被应用到大中型商业网站。
0x02 写在前面的话phpcms 2008 这是我看第二次代码了,之前已经发现了一些问题,只是没放出来,这次稍微仔细看了看,又发现了一些问题
这次就放2个吧,其中啥啥的getshell暂时就不会放了,比起v9来说,2008的安全性能确实差很多,模块化以及代码严谨程度也没有v9强
这次还没把代码看完,只看完几个页面,就先放2个有问题的地方,如果有更好的方式,到时候一起讨论 0x03 路径? ? ?
在include/common.inc.php中 ,这是phpcms的全局要加载的配置文件
$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])); } 登录后复制 |
然后就是将我们传进来的参数进行变量化
这里有一些小过滤,自己可以看,所以这里传进来的参数就作为了变量
但是接下来这行呢?
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])); } 登录后复制 |
这里的QUERY_STRING来自前面
define(''HTTP_REFERER'', isset($_SERVER[''HTTP_REFERER'']) ? $_SERVER[''HTTP_REFERER''] : ''''); define(''SCRIPT_NAME'', isset($_SERVER[''SCRIPT_NAME'']) ? $_SERVER[''SCRIPT_NAME''] : preg_replace("/(.*).php(.*)/i", "<span>\1.php"</span>, $_SERVER[''PHP_SELF''])); define(''QUERY_STRING'', safe_replace($_SERVER[''QUERY_STRING''])); 登录后复制 |
如果我们在这里进行覆盖这个db变量呢
因为这里 parse_str(str_replace(array(''/'', ''-'', '' ''), array(''&'', ''='', ''''), $urlvar[1]));
可以将我们传进去的/ - 进行替换
所以我们如果提交如下字符 http://localhost/phpcms/index.php?db-5/gid-xd.html 他由于这个db被覆盖就会出错,所以物理路径就爆出来了

在c.php中
$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); 登录后复制 |
这里的常量是通过前面的common.inc.php定义好的
define(''HTTP_REFERER'', isset($_SERVER[''HTTP_REFERER'']) ? $_SERVER[''HTTP_REFERER''] : '''');
没有经过任何过滤操作,所以你懂的,我估计很多同学已经发现了,只是没去公布了,所以俺就替你们xxoo了,哈哈...别骂我
然后
$db->insert($table, $info);
我们来看一下它这里的操作
function insert($tablename, $array) { $this->check_fields($tablename, $array); return $this->query("INSERT INTO `<span>$tablename`(`"</span>.implode(''`,`'', array_keys($array))."`) VALUES(''".implode("'',''", $array)."'')"); //echo "INSERT INTO `$tablename`(`".implode(''`,`'', array_keys($array))."`) VALUES(''".implode("'',''", $array)."'')"; } 登录后复制 |

Backup SQL Server 2008 R2 Restore on SQL 2008
1.Install an instance of SQL 2008 R2 on one machine and SQL 2008 on another2.Open SQL Server Management Studio R2
3.Select your source Database
4.Select Tasks>Generate Scripts.
5.Select ''Script entire database and all database objects'', press ''Next''
6.Select ''Save to File'' and click on the ''Advanced'' button
7.Select ''Script for Server Version'' and select the version you want: 200/2005/2008
8.Select ''Type of data to Script'' and select Schema/Data/both
9.Click ''OK'',Next and do it!
10.Copy the resulting file to the target machine with SQL 2008 [or whatever]
11.Log onto your SQL Management Studio and open the copied .sql file... be aware that there may be limitations on the file size.
There may also be issues with the order that the .SQL file inserts the data into the target database and if there are FK constraints in place, this could be an issue.... simply re-order the insert lists.
12.Once the .sql file is organised, parse it [just to sure], and then execute.
c# – 从一个DataBase(sql server 2008)到具有不同架构的另一个db(sql server 2008)的传输数据的最佳方式
有没有这样做的程序?
谢谢你的未来asnwer
最好的祝福
解决方法
CMS系统:PHPCMS V9 /phpcms/modules/member/index.php phpcms注入漏洞修复补丁
《CMS系统:PHPCMS V9 /PHPcms/modules/member/index.PHP PHPcms注入漏洞修复补丁》要点:
本文介绍了CMS系统:PHPCMS V9 /PHPcms/modules/member/index.PHP PHPcms注入漏洞修复补丁,希望对您有用。如果有疑问,可以联系我们。
漏洞名称:PHPcms注入漏洞
文件路径:/PHPcms/modules/member/index.PHP
修复方法来源于网络,由风信网整理提供.
源代码大概615行:
if(empty($_SESSION['connectid'])) {
//判断验证码
$code = isset($_POST['code']) && trim($_POST['code']) ? trim($_POST['code']) : showmessage(L('input_code'),HTTP_REFERER);
if ($_SESSION['code'] != strtolower($code)) {
$_SESSION['code'] = '';
showmessage(L('code_error'),sans-serif; line-height: 30px;">}
$_SESSION['code'] = '';
$username = isset($_POST['username']) && is_username($_POST['username']) ? trim($_POST['username']) : showmessage(L('username_empty'),sans-serif; line-height: 30px;">$password = isset($_POST['password']) && trim($_POST['password']) ? trim($_POST['password']) : showmessage(L('password_empty'),sans-serif; line-height: 30px;">针对phpsso模块添加过滤代码,最好的方式应该是将转义和过滤放在数据库操作的前一步,这样可以极有效缓解sql注入带来的问题
修改代码:
$password = isset($_POST['password']) && trim($_POST['password']) ? trim($_POST['password']) : showmessage(L('password_empty'),sans-serif; line-height: 30px;">改为:
$password = isset($_POST[‘password‘]) && trim($_POST[‘password‘]) ? addslashes(urldecode(trim($_POST[‘password‘]))) : showmessage(L(‘password_empty‘),HTTP_REFERER);
DBCC大全集之(适用版本MS SQLServer 2008 R2)---DBCC CHECKIDENT在 SQL Server 2008 R2 中检查指定表的当前标识值,如有必要,则更改标识值
在 sql Server 2008 R2 中检查指定表的当前标识值,如有必要,则更改标识值。还可以使用 DBCC CHECKIDENT 为标识列手动设置新的当前标识值。
DBCC CHECKIDENT ( table_name [,{ norESEED | { RESEED [,new_reseed_value ] } } ] ) [ WITH NO_INFOMSGS ]
- table_name
-
是要对其当前标识值进行检查的表名。指定的表必须包含标识列。表名必须符合标识符规则。
- norESEED
-
指定不应更改当前标识值。
- RESEED
-
指定应该更改当前标识值。
- new_reseed_value
-
用作标识列的当前值的新值。
- WITH NO_INFOMSGS
-
取消显示所有信息性消息。
对当前标识值所做的具体更正取决于参数规范。
DBCC CHECKIDENT 命令 |
标识更正或所做的更正 |
---|---|
DBCC CHECKIDENT (table_name,norESEED ) |
不重置当前标识值。DBCC CHECKIDENT 将返回标识列的当前标识值和当前最大值。如果这两个值不相同,则应重置标识值,以避免值序列中的潜在错误或空白。 |
DBCC CHECKIDENT (table_name ) 或者 DBCC CHECKIDENT (table_name,RESEED ) |
如果表的当前标识值小于标识列中存储的最大标识值,则使用标识列中的最大值对其进行重置。请参阅后面的“异常”部分。 |
DBCC CHECKIDENT (table_name,RESEED,new_reseed_value ) |
将当前标识值设置为 new_reseed_value。如果自从创建表以来未在表中插入任何行,或者已使用 TruncATE TABLE 语句删除所有行,则在运行 DBCC CHECKIDENT 之后插入的第一行将使用 new_reseed_value 作为标识。否则,插入的下一行将使用new_reseed_value + 当前增量值。 如果该表不为空,那么将标识值设置为小于标识列中的最大值的数字时,将会出现下列情况之一:
|
异常
下表列出了 DBCC CHECKIDENT 不自动重置当前标识值时的条件,并提供了重置该值的方法。
条件 |
重置方法 |
---|---|
当前标识值大于表中的最大值。 |
或者
|
删除表中的所有行。 |
在将 new_reseed_value 设置为所需开始值的情况下执行 DBCC CHECKIDENT (table_name,new_reseed_value)。 |
更改种子值
种子值是针对装入表的第一行插入到标识列的值。所有后续行都包含当前标识值和增量值,其中当前标识值是为当前表或视图生成的最新标识值。有关详细信息,请参阅创建和修改标识符列。
不能使用 DBCC CHECKIDENT 执行下列任务:
-
更改创建表或视图时为标识列指定的原始种子值。
-
重设表或视图中的现有行的种子值。
若要更改原始种子值并重设所有现有行的种子值,必须删除并重新创建标识列,然后为标识列指定新的种子值。当表包含数据时,还会将标识号添加到具有指定种子值和增量值的现有行中。无法保证行的更新顺序。
无论是否为包含标识列的表指定了任何选项,DBCC CHECKIDENT 都返回以下信息(返回值可能有所不同):
Checking identity information: current identity value '290',current column value '290'. DBCC execution completed. If DBCC printed error messages,contact your system administrator.
调用方必须拥有表,或者是 sysadmin 固定服务器角色、db_owner 固定数据库角色或 db_ddladmin 固定数据库角色的成员。
A. 根据需要重置当前标识值
以下示例根据需要重置 AdventureWorks2008R2 数据库中 Addresstype 表的当前标识值。
USE AdventureWorks2008R2; GO DBCC CHECKIDENT ("Person.Addresstype"); GO
B. 报告当前标识值
以下示例报告 AdventureWorks2008R2 数据库的 Addresstype 表中的当前标识值,但如果该标识值不正确,不会进行更正。
USE AdventureWorks2008R2; GO DBCC CHECKIDENT ("Person.Addresstype",norESEED); GO
C. 强制将当前标识值设为新值
以下示例强制将 Addresstype 表中的 AddresstypeID 列中的当前标识值设置为 10。因为该表有现有行,因此下一个插入行将使用 11 作为值,即当前标识值加上 1(为该列定义的当前增加值)。
USE AdventureWorks2008R2; GO DBCC CHECKIDENT ("Person.Addresstype",10); GO
关于PHPCMS 2008 最新漏洞demo测试详解_PHP教程和phpcms漏洞利用的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Backup SQL Server 2008 R2 Restore on SQL 2008、c# – 从一个DataBase(sql server 2008)到具有不同架构的另一个db(sql server 2008)的传输数据的最佳方式、CMS系统:PHPCMS V9 /phpcms/modules/member/index.php phpcms注入漏洞修复补丁、DBCC大全集之(适用版本MS SQLServer 2008 R2)---DBCC CHECKIDENT在 SQL Server 2008 R2 中检查指定表的当前标识值,如有必要,则更改标识值等相关知识的信息别忘了在本站进行查找喔。
本文标签: