by amxku on 2009-03-08, 21:43. 技术相关
一开始我还认为php完全是可以获取到client的mac的,很是荒谬。最后还被云舒鄙视了一番。
这完全不可能的。php是不肯能直接获取到client的mac的。
首先php完全就是在服务端解释执行的,所以没可能直接获取到浏览端的网卡MAC,因为浏览器默认行为是不会把MAC发送出去的。
要是从数据包的角度来解释的话,一般都是在局域网内部传输时才会包上MAC头,经过路由不断转发,实际上每经过一级设备都被剥去一层,到最后就只剩下TCP/IP的数据头和数据了。MAC只可能是在网络底层的物理层中传输。(也就是说client的mac地址信息是不可能在公网上传输的,公网上的MAC信息是最后一跳设备的接口MAC,见Hell-Phantom评论)
从http协议来讲,也是不可能的。http请求中也不可能带上mac地址。可以看看http协议的相关说明。
所以说php是不可能直接获取到client的mac地址的,php要想得到client的MAC地址,得用到第三方的ActiveX或是用js等。PS:http://www.kenes.com.cn/MAC.html
关键词: php, client, http
Comments (15) , Views (1910)
by amxku on 2009-01-14, 10:44. 技术相关
在审计sebug.net代码时,发现的一处问题,以前好像没怎么注意,这里记录下
- $query = $db->query("select * from DB where id IN (".$id.")");
- $query = $db->query("select * from DB where id IN ('".$id."')");
这两个最大的不同就是多了个''引用。
如果我们提交php?id=1 and 1=2,最后变成:
- select * from DB where id=1 and 1=2 //and 1=2 变成表达式了
- select * from DB where id='1 and 1=2' //and 1=2 还是字符串
记录下。但这绝不仅仅是sql注入!
关键词: php, 安全, 审计
Comments (4) , Views (1511)
by amxku on 2008-11-09, 23:38. 技术相关
- <?php
- /******************************************************************
- Check MD5(md5sum for php)
- 2008-11-09
- amxku.net
-
- 校验文件的准确性.
- 在网站被入侵后,检查文件的准确性。
-
- *UIX下可以用md5sum * >md5sum 来得到所有文件的md5值,然后把两次得到的
- MD5值来进行对比。
-
- 在代码检查方面那么有一丁点用处,别的没什么用。
- ******************************************************************/
- echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>';
- echo '<title>Check MD5(md5sum for php)</title>';
- check_md5(".");
-
- function check_md5($directory){
- $check_md5_dir = @opendir($directory);
- echo '<ul>';
- while ($file = @readdir($check_md5_dir)) {
- if ($file != "." && $file != "..") {
- if(is_dir("$directory/$file")){
- echo '<li><strong>'.$file.'</strong></li>';
- tree("$directory/$file");
- }else{
- echo '<li>'.$file.' ==> '.md5_file("$directory/$file").'</li>';
- }
- }
- }
- echo '</ul>';
- closedir($check_md5_dir);
- }
- ?>
关键词: php, 安全, 审计, 代码, 原创
Comments (5) , Views (1870)
by amxku on 2008-10-17, 16:48. 杂七杂八
关键词: sebug, php, 重构
Comments (5) , Views (1704)
by amxku on 2008-09-28, 02:49. 技术相关
by amxku
2008-09-28
http://www.wolfexp.net
在php中用户的输入数据为 GET、POST 和 COOKIE 三种,一般被称为 GPC 数据。php4.3.0之后的版本中register_globals 的默认值为off,但现在还是有部分在php.ini中将register_globals 的设为on,所以这里就存在了一些隐藏的风险。
register_globals 本身并没有安全风险。但如果将register_globals设为on,在全局名称空间和 $_GET、$_POST 或 $_COOKIE 数组中,将创建 GET、POST 和 COOKIE 传递到 PHP 脚本的所有变量。各种变量都被注入代码。再加上 php 在使用变量之前是无需进行初始化的,如果开发人员没有好的编程习惯,这就使得更容易产生一些安全风险。
» 阅读全文
关键词: php, 安全, 脚本, 原创
Comments (8) , Views (2301)
by amxku on 2008-09-16, 14:26. 技术相关
先看效果图

» 阅读全文
关键词: php, sablog, autosuggestion, 原创
Comments (3) , Views (1983)
by amxku on 2008-09-14, 03:19. 杂七杂八
最近回了趟老家,还是比较爽,没有电话,没有邮件,没有网络。每天听着青蛙的叫声入睡,哈哈。就是爽。明天要回上海了。这估计也是我上班以来休息的时间最长的一次了。
下午,把blog的模板改了改。
唉,这脚本被我改得乱七八糟了,现在升级也升不了了,麻烦。唉。用Yslow测试了一下,好像GZIP没有起来嘛。看了看代码,也没有发现什么问题。Archiver页面竟又有GZIP压缩,就主页没有压缩,唉,搞不明白了。回头有空再看看吧。网上找到一段代码,记录下,有空看看。
- <?php
- $file="all.js";
- header("Expires:".gmdate("D, d M Y H:i:s", time()+15360000)."GMT");
- header("Cache-Control: max-age=315360000");
- $mtime = filemtime($file);
- $gmt_mtime = gmdate('D, d M Y H:i:s', $mtime) . ' GMT';
- header("Last-Modified:" . $gmt_mtime);
- $ext = array_pop(explode('.', $file));
- switch ($ext){
- case 'css':
- header("Content-type: text/css");
- break;
- case 'js' :
- header("Content-type: text/javascript");
- break;
- case 'gif':
- header("Content-type: image/gif");
- break;
- case 'jpg':
- header("Content-type: image/jpeg");
- break;
- case 'png':
- header("Content-type: image/png");
- break;
- default:
- header("Content-type: text/plain");
- }
- if(extension_loaded('zlib')){ob_start('ob_gzhandler');}
- echo implode('', file($file));
- if(extension_loaded('zlib')){
- ob_end_flush();
- }
- ?>
关键词: php, blog
Comments (3) , Views (1687)
by amxku on 2008-08-05, 21:01. 技术相关
php在进行utf8编码转换时比较严格,对于提交不合法的数据将丢掉或不解析,而第三方编码类在这里会进行强行转换。这就是这两天转码引发了一连串的东东。
sablog 1.6注射漏洞 http://www.sebug.net/vulndb/3784/
Discuz!论坛wap功能模块编码的注射漏洞 http://www.sebug.net/vulndb/3778/
PHPWind Forums编码注射漏洞 http://www.sebug.net/vulndb/3785/
下了几套开源的系统看看了,还有部分系统也同意存在这样的问题。比较龌龊的东东。建议采用第三方编码转换类的朋友检查一下。
关键词: 转码, 注入, 漏洞, php
Comments (3) , Views (2027)
by amxku on 2008-07-27, 21:02. 技术相关
- $fp =@fsockopen($domain, $port, $errno, $errstr, 20);
- if(!$fp){
- return "UNKNOWN";
- exit;
- } else {
- $ok = false;
- @fputs($fp,"GET $geturl HTTP/1.0\nHost: $domain\n\n\r\n");
- while(!feof($fp)){
- $line = fgets($fp,128);
- if(! $ok && preg_match("/^[\r\n]+$/",$line)) {
- $ok = true;
- }
- if(!$ok){
- if(preg_match("/([^:]+?):(.+)/",$line,$r))
- $info[$r[1]] = $r[2];
- }else{
- $body.=$line;
- }
- }
- }
-
-
- fclose($fp);
关键词: php, 版本, 脚本, webserver
Comments (0) , Views (2042)
by amxku on 2008-06-12, 00:50. 技术相关
晚上给SEbug装个论坛,整了半天源码总是直接显示出来了,找了半天发现有个文件里存在非法字符。
和 Helvin 测试了下,发现在php中插入0x00可以让php不解析,过滤不严的话,就可以直接让他显示源代码。非程序错误跳出,是解释器没有执行。可能在PHP看来只是一个正常的错误,他认为请求了错误内存地址。
在网上找了一下php关于Null Byte Character的漏洞真不少。测试一下,发现GET是没有影响的,那就没价值了。php处理字串的代码好几M呢,懒得去看也不一定能看得明白。有兴趣的朋友可以跟一下。
关键词: php, 空字节, tips, 原创, bug
Comments (11) , Views (2548)