仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1251|回复: 19
打印 上一主题 下一主题

[学习教程] PHP编程:关于phpwind 5.01-5.3 0day的剖析文章

[复制链接]
海妖 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:00:13 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我先解释一下我的学习思路。   明天要luoluo牛抓了下包,这个破绽挺牛的 :)
passport_client.php 里变量没有初始化可以绕过那些判别:

if(!$passport_ifopen || $passport_type != 'client'){
  exit("Passport closed(PHPWind)");
}//提交:passport_ifopen =1&passport_type=client绕过


if(md5($action.$userdb.$forward.$passport_key) != $verify){
  exit('Illegal request(PHPWind)');
} //外面的变量都可以自界说,所以你可以sy一下绕过

parse_str(StrCode($userdb,'DECODE'),$userdb); //注重StrCode($userdb,'DECODE'),所以你要把你提交的变量$userdb,StrCode($userdb,'DECODE')编码一下

if($action=='login'){//提交action=login

  if(!$userdb['time'] || !$userdb['username'] || !$userdb['password']){
    exit("Lack of parameters(PHPWind)");
  }//提交的 $userdb解码今后要有这些数据

  if($timestamp-$userdb['time']>3600){
    exit('Passport request expired(PHPWind)');
  }//提交工夫userdb['time'] 大一点
.....
  $rt=$db->get_one("SELECT uid $sql FROM pw_members WHERE username='$userdb[username]'");
  if($rt){ //假如有这个用户的话挪用上面的语句修正暗码等

          $sql && $db->update("UPDATE pw_members SET $sql WHERE uid='$rt[uid]'");
    $sql2 && $db->update("UPDATE pw_memberdata SET $sql2 WHERE uid='$rt[uid]'");   

      }else{//假如没有这个用户就会挪用上面的增添一个

    $db->update("REPLACE INTO pw_members($sql1,groupid,memberid,gender,regdate,signchange) VALUES($sql2,'-1','8','0','$timestamp','1')");
刚开始写页面程序,调试完书中的例子。然后就可以尝试编写留言板了,
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-19 17:45

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表