Submitted by gouki on 2010, February 28, 10:03 PM
我们来讨论包含文件漏洞,首先要问的是,什么才是"远程文件包含漏洞"?回答是:服务器通过php的特性(函数)去包含任意文件时,由于要包 含的这个文件来源过滤不严,从而可去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的。几乎所有的 cgi程序都有这样的 bug,只是具体的表现方式不一样罢了。
» 阅读全文
 
Tags: require, include
PHP | 评论:2
 | 阅读:24709
Submitted by gouki on 2010, February 27, 8:38 PM
Firecookie是firefox的插件。而且它是根在firebug插件里面的。所以,要安装firecookie一定要先安装firebug。安装完Firecookie后,点击F12,在Firebug里面多了一个cookies的Tab,从里面可以看到,列出了当前应用中的cookie信息。
通过这个tab可以看到有些cookie的过期时间显 示“会话”,有些显示的是具体时间。那些显示的是“会话”的cookie就被称为是“会话cookie”,即关闭了当前浏览器后,该cookie就消失 了。那些设置了具体过期时间的cookie被称为是持久cookie,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依 然有效直到超过设定的过期时间。
有些cookie被设置为http-only,是为了防止跨站点脚本攻击(XSS),以防用户重要的cookie信息被别人窃取。这点就不深入了,网上有很多资料。
Cookie的路径用于设置可以读取一个cookie的最顶层的目录,如显示为“/”说明只要在同一个域中,所有的文件都可以访问该cookie。
这个工具可以修改cookie的值、新建cookie、清除cookie等功能。在测试的过程中可以利用这个工具修改相应的cookie的值,来测试对应功能是否正确。
你试试看就知道喽。HOHO
 
Software | 评论:0
 | 阅读:21046
Submitted by gouki on 2010, February 27, 8:22 PM
这篇文章很强悍,看到的时候我很惊讶,传说中的大吃一斤又出现了。
没办法,人啊。。。总是会想到奇怪的方法,呵呵。。
看内容吧。不多说了,很彪悍。
G Reader里Dexter同学的分享,来自sla.ckers.org的又一神作:点我测试
GReader里看不到效果的同学请自行测试下列HTML:
JavaScript代码
- <script language="javascript" type="text/javascript">  
 - ([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()[(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]])([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()[(![]+[])[+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()+[])[!+[]+!+[]]]((![]+[])[+!+[]]+(+[![]]+[])[+[]])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+(!![]+[])[+[]]+[][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()[(![]+[])[+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()+[])[!+[]+!+[]]]((![]+[])[+!+[]]+(+[![]]+[])[+[]])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]])  
 - </script>  
 
 在线转换工具
 
跟Brainfuck有的一拼。。。是挂马的好办法。。。
更新:研究了一下它实现的原理,有一个码表:
XML/HTML代码
-     (NaN+[]["filter"])[11]',  
 - !   window["atob"]("If")[0]',  
 - "   ("").fontcolor()[12]',  
 - #   window["atob"]("0iN")[1]',  
 - $   window["atob"]("0iT")[1]',  
 - %   window["atob"]("0iW")[1]',  
 - &   window["atob"]("0ia")[1]',  
 - '   window["atob"]("0if")[1]',  
 - (   (false+[]["filter"])[20]',  
 - )   (false+[]["filter"])[21]',  
 - *   window["atob"]("0ir")[1]',  
 - +   window["atob"]("0it")[1]',  
 - ,   window["atob"]("0iy")[1]',  
 - -   (NaN+window["Date"]())[31]',  
 - .   window["atob"]("1i4")[1]',  
 - /   (true+("")["sub"]())[10]',  
 - 0-9 ignored*/ ,,,,,,,,,,  
 - :   window["Date"]()[21]',  
 - ;   window["atob"]("O0")[0]',  
 - <   ("")["sub"]()[0]',  
 - =   ("").fontcolor()[11]',  
 - >   ("")["sub"]()[10]',  
 - ?   window["atob"]("0j9")[1]',  
 - @   window["atob"]("00A")[1]',  
 - A   (+[]+[]["constructor"])[10]',  
 - B   (+[]+(false)["constructor"])[10]',  
 - C   window["atob"]("00N")[1]',  
 - D   window["btoa"](00)[1]',  
 - E   window["btoa"](01)[2]',  
 - F   (0+[]["filter"]["constructor"])[10]',  
 - G   window["btoa"]("0f")[1]',  
 - H   window["btoa"]("0t")[1]',  
 - I   ("Infinity")[0]',  
 - J   window["atob"]("00r")[1]',  
 - K   window["btoa"]("(")[0]',  
 - L   window["btoa"]("/")[0]',  
 - M   window["btoa"](0)[0]',  
 - N   ("NaN")[0]',  
 - O   window["btoa"](8)[0]',  
 - P   window["btoa"]("<")[0]',  
 - Q   window["btoa"]("a")[1]',  
 - R   window["atob"]("01I")[1]',  
 - S   window["btoa"]("I")[0]',  
 - T   window["btoa"]("N")[0]',  
 - U   window["atob"]("01W")[1]',  
 - V   window["atob"]("01a")[1]',  
 - W   (true+window)[12]',  
 - X   window["atob"]("01i")[1]',  
 - Y   window["btoa"]("a")[0]',  
 - Z   window["btoa"]("f")[0]',  
 - [   (undefined+[]["filter"])[33]',  
 - \   window["atob"]("01y")[1]',  
 - ]   (true+[]["filter"])[40]',  
 - ^   window["atob"](014)[1]',  
 - _   window["atob"](018)[1]',  
 - `   window["atob"]("02A")[1]',  
 - a   ("false")[1]',  
 - b   (window+[])[2]',  
 - c   ([]["filter"]+[])[3]',  
 - d   ("undefined")[2]',  
 - e   ("true")[3]',  
 - f   ("false")[0]',   
 - g   ([]+("")["constructor"])[14]',  
 - h   window["atob"]("aN")[0]',  
 - i   ([false]+undefined)[10]',  
 - j   (window+[])[3]',  
 - k   window["atob"]("a0")[0]',  
 - l   ("false")[2]',  
 - m   (Number+[])[11]',  
 - n   ("undefined")[1]',  
 - o   (true+[]["filter"])[10]',  
 - p   window["atob"]("cN")[0]',  
 - q   window["atob"]("cf")[0]',  
 - r   ("true")[1]',  
 - s   ("false")[3]',  
 - t   ("true")[0]',  
 - u   ("undefined")[0]',  
 - v   (0+[]["filter"])[30]',  
 - w   ([]["sort"]["call"]()+[])[13]',  
 - x   window["atob"]("eN")[0]',  
 - y   (NaN+[Infinity])[10]',  
 - z   window["atob"]("et")[0]',  
 - {   (NaN+[]["filter"])[21]',  
 - |   window["atob"]("03y")[1]',  
 - }   (NaN+[]["filter"])[41]',  
 - ~   window["atob"](234)[1]'  
 
拼接出来字符串 
"eval",如何把 
"eval" 变成 
eval() 呢?方法是:
[]["sort"]["call"]()["eval"]
其中 []["sort"]["call"]() 等于 [].sort.call() ,等价于 window,所以上面 []["sort"]["call"]()["eval"] 就等价于 window.eval。
然后就是体力活了,把码表对应转换成 eval("blah blah") 这种形式就可以执行任意代码了,不同浏览器的码表不一样。 Chrome和Firefox的index就不一样。
其实这个码表还可以通过 ·toLocal*()` 函数族扩展到Unicode,比fromCharCode要简短 :D
原文来自:http://www.cnblogs.com/pandora/archive/2010/02/27/1674833.html
 
 
Javascript | 评论:1
 | 阅读:17748
Submitted by gouki on 2010, February 26, 9:09 AM
再次看阿凡达,距离上次是一个月后的事了。
上次是在曹扬影城,普通3D版的,为了这个imax 3D,老婆是念叨了很久了,正好她去莱福士,看到这个加场,就买了票,最后一排的。
12点半的电影。上完课后回家睡了一个小时,11点半起床,打车去了莱福士。
15米高, 20米宽的屏幕看起来是爽。唯一不爽的是,眼镜好象有点差。(我去之前想了想,这么大的屏幕,我应该可以不用戴眼镜吧?果然,象我这种300度以内的眼镜男,不戴眼镜也看的很清楚)
效果嘛。。比普通的3D确实有改进,普通的3D看上去,就象浮在眼前,而imax的却有点身临其境 的感觉(当然这只是自己的看法,也可能每个人确实不一样)
这么大的屏幕,原来没注意的一些细节也能够完善的表现出来了。
只是午夜场看的太累。而且又是周四。
180的票加上打车费,一下子升级到了230。。。不过还算物有所值吧。虽然这个代价大了一点
 
Tags: 阿凡达
Misc | 评论:3
 | 阅读:17966
Submitted by gouki on 2010, February 25, 11:01 AM
我在写sbConfigure类的时候,还是采用了以前的Configure的解析方法,即get方法可以以字符串的形式来读取数组变量,就象这样
PHP代码
    - sbConfigure::get("a.b.c");  
 
 
Return:
PHP代码
    - return self::$_config['a']['b']['c'];  
 
 
但事实上,我为了这个返回,写了五六次代码了,但最终还是采用了foreach的方法
第一次我这么处理(采用了Eval),
PHP代码
    -   
 
    - $arrkeys = "[a][b][c]"  
 
    - eval("\$ret = self::\$_config$arrkeys;");  
 
    - return $ret;  
 
 
后来,yhustc说这样不太安全,所以我改成了foeach的方式
PHP代码
    -   
 
    - $arr = self::$_config;  
 
    - $_err = false;  
 
    - foreach($names as $name){  
 
    -     if(isset($arr[$name])){  
 
    -         $arr = $arr[$name];  
 
    -     }else{  
 
    -         $_err = true;  
 
    -         break;  
 
    -     }  
 
    - }  
 
    - if($_err == true)return ;  
 
    - return $arr;  
 
 
$_err这个变量是为了防止变量在没有设定的时候仍然返回值。。。
昨天我又想用eval,但还是失败了。。。
不知道有没有更好的转换方式,查看了parse_ini_file,因为我想,ini文件中有
XML/HTML代码
    - [test]  
 
    - a.b=1  
 
    - a.c=2  
 
 
有这样的返回数组。所以我在想着参考。然而仍然失望 ,又想着pack?serialize?json_decode?之类的解决方式,但还是失败了。。郁闷啊。
先记录一下,如果有更好的方法,就再次更新
 
 
 
 
PHP | 评论:0
 | 阅读:16200