|
|
| 首页 | 技术文章 | 软件下载 | 博客 | 论坛 | 精品教程 | 黑客动画 | 视频资源 | 在线服务 | 黑客游戏 | | ||||
|
|
||||||||
|
||||||||
|
|||||
| PHP4内核Hacking | |||||
作者:Darkness 文章来源:网络 点击数: 更新时间:2006-12-6 ![]() |
|||||
|
此篇文章记录一下我这些天PHP HACKING的经验,乱七遭八的。各位看官莫见笑,有问题多交流。 先大概描述一下PHP内核的情况,PHP内核分为2个部分,ZEND和PHP CORE。ZEND可以说是PHP的内核的内核,他负责与操作系统沟通。分配内存,模块初始化什么什么的,他就负责了,同时把可读的脚本代码系统化。而PHP CORE呢,负责一些外围处理,比如与SAPI沟通。APACHE、IIS啊之类的东西。php.ini他也管。 还负责网络和文件I/O。最后提醒一句,PHP是用C写的,而不是C++,大多数资源,类型,在PHP内核中需要转换。 在C语言中,套接字这样定义:SOCKET socket(int af,int type,int protocol); 在PHP中是:
看起来是一样的。那就来看看一个最简单的网络函数。
先说zval,ZVAL是PHP内核中的结构,里面包含任何数据类型。所以在PHP内核中最好用ZVAL,而少用char *。这样可能会带来一些安全问题。看上面的代码,好象是没问题。其实不然,看char * str。他作为第2个参数被传入。 执行socket_write ( $sock, "hellosdfs35434sdvx.plpop34][[]" ); 正常得很。但是如果我们提交一个PHP数组他就会暴错了。为什么呢?虽然说char str[]从某种意义上等于char * str。但是PHP中的数组和C语言可不一样。PHP程序本身这种错误太多了,PHP的开发者可能已经习惯了。 继续PHP SOCK.zend_parse_parameters函数是得到传入参数的,当CHAR类型被传入的时候,必须指定CHAR LEN.ZEND_NUM_ARGS()是得到函数个数的。 那TSRMLS_CC是什么东西。这里得专门讲一下TSRM。他的全称是Thread Safe Resource Management。 PHP是作为网络脚本来使用的,这意味着,成千上万的人在同1秒钟里可能调用同一个页面。客户A请求的是ID1,客户B请求的是ID2,以下省去数万字。 如果没有TSRM的话,单线程的SAPI还好说,像apache,iis这样的话。那么PHP可能乱套。TSRM的作用就是保持变量的中立性。在PHP中,基本上从全局传入参数都要使用TSRM.PHP hacking中也应该使用TSRM。 ZEND_FETCH_RESOURCE(php_sock, php_socket *, &arg1, -1, le_socket_name, le_socket); 相当于是把参数1 当做PHP_SOCK类型在ZEND注册资源。关于SOCKET_WRITE后面都是一些简单的C函数,就不谈了这个了。 关于PHP内核里面建立套接字还有一种方法,那就是用PHP流。PHP流是很强大的,是I/O的代名词。无论是FILE I/O,还是NETWORK I/O。 拿php_stream_open_wrapper API来说,他支持FILE、TCP、UDP、SSL、SCP、HTTP、FTP。
看了上面的代码,可以知道的是。C语言的FILE操作函数那些 加上php_stream便可以操作php i/o了。这是官方给的一个例子。有一点错误,PHP中printf是不能输出到网页的,要用php_printf或者zend_printf,php_write。 继续socket的话题。在php i/o中有一个API,可以把C语言的SOCKET劫持到PHP中。
这样比起php_sock方便一些。 再谈谈PHP内核中的管道与命令执行。
我看了一下SYSTEM,PASSTHRU的代码,都是由popen来完成。POPEN又由popen_ex来完成。
process_pair是一个结构体,HANDLE和FILE。这段代码好象是一个标准的CMDSHELL。他建立了并返回了管道(文件)流。 这可是用C语言建立的管道啊,PHP并不懂的。要用PHP的一个未公开的API来完成转换。说到未公开,PHP的内核好多东西都是"未公开"的。这方面的文档少得很。
接下来就交给php_stram系列处理了。这样就能正常输出了。 |
|||||
| 文章录入:IceRiver 责任编辑:IceRiver | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| HP-UX get_system_info的工具 iPhone“越狱” 中国黑客逼得 黑客隐藏PHP文件后门的技巧 Cisco 7940 Phone SIP 消息远 iPhone遭美17岁少年解锁 黑客 美国高中生破解iPhone 移植到 苹果周二发补丁 iPhone也出 安全问题?苹果iPhone放出1. 安全公司发现iPhone严重安全 开源PHP 4支持今年底结束 升 |
网友评论:(只显示最新5条。评论内容只代表网友观点,与本站立场无关!) |
| 关于我们 - 版权声明 - 帮助(?) - 广告服务 - 联系我们 - 友情链接 - 用户注册 - | Powered by ICE RIVER - STUDIO |
| » CnXHacker.CoM | © CopyRight 2002-2006, CnXHacker.CoM™, Inc. All Rights Reserved. |