• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    拿下DVBBS php官网详细过程(图)

    发布者: 酸菜鱼 | 发布时间: 2025-6-27 16:20| 查看数: 33| 评论数: 0|帖子模式

    注意:文章已经发表在2008第7期《黑客手册》上,转载请注明出处。
    几 个月前,DVBBS php2.0暴了一个可以直接读出管理员密码的sql注入漏洞,当时这个漏洞出来的时候,我看的心痒,怎么还会有这么弱智的漏洞,DVBBS php2.0这套代码我还没仔细看过,于是5月中旬我down下来粗略看了下,接着我花了三天的时间,拿下p.dvbbs.net,即动网php的官方网 站,并得到了webshell。总的来说,这次入侵凭的是二分技术加一分运气。

      一、 SQL注入漏洞:

      晚上检查了好久,终于在topicother.php中发现了一处sql注入漏洞,但是并不像前段时间暴的漏洞那么简单,因为不能把密码直接读出数据库并显示出来,这是个活动帖子的报名主函数,我简单搜索了下,1.0好像后来就增加了这个功能。好了,来看具体函数:

    function PostActive_Main(){
    ……
    $TopicID = $GLOBALS['id'];
    $activeid = trim($_GET['activeid']);//activeid并没有过滤
    $timemode = $_POST['payment'];
    $systemmode = trim($_POST['contact']);
    $message = trim($_POST['message']);

    $gettimemode = trim($_POST['timemode']);
    $getstarttime = trim($_POST['starttime']);
    $getendtime = trim($_POST['endtime']);
    $getexpiretime = trim($_POST['expiretime']);

    if($timemode ==0)
    $costnum = 0;
    else
    $costnum = intval(trim($_POST['payvalue']));
    //直接带进来使用了
    if( $query = $db->query("SELECT u1.sex,u1.strength,u2.usersex FROM {$dv}active as u1,{$dv}user as u2 WHERE activeid={$activeid}")){
    $activeinfo =& $db->fetch_array($query);
    if( !empty($activeinfo) ) {
    $db->free_result($query);
    }
    }
    if( $num = $db->query("SELECT count(*) as num from {$dv}activeuser where activeid='".$activeid."'")){
    $activenum = $db->fetch_array($num);
    if( !empty($activenum) ) {
    $db->free_result($num);
    }
    }

    //如果查取的activeid不正确或者后面注入的条件不成立,则显示显示str1:对不起!本活动报名人数已满!
    if($activenum['num']>=$activeinfo['strength']){
    head(0,0,0,$arrNavMenu);
    showmsg($lang['Active_Error.str1']);
    exit;
    }
    //如果activeid正确(后面注入的条件也成立),但没有登陆,就显示str2:请登陆后操作!
    if ($userid==0) {
    head(0,0,0,$arrNavMenu);
    showmsg($lang['Active_Error.str2']);
    exit;
    }

    //如果activeid正确并且已经登陆了,递交的时候没有递交联系方式,则会显示str6这个错误:对不起联系方式不能为空或小于8个字符!
    if (''==$systemmode||strlen($systemmode)<8) {
    head(0,0,0,$arrNavMenu);
    showmsg($lang['Active_Error.str6']);
    exit;
    }

    }


      首先先确定有没有activeid为1的活动帖子,就是在论坛目录后加上

      topicother.php?t=9&action=join&activeid=1

      显示“对不起!本活动报名人数已满!”则有可能不存在,自己注册个号进去发个活动帖子先。

      根 据上面解释,大家是否已经看出来该怎么注入啦,并不是什么都需要工具的,想当年ACCESS手工注入又不是没注入过,判断条件正确就返回正常,错误就不正 常显示;这里不也是同样的道理么,不管有没登陆,出错都显示:“对不起!本活动报名人数已满!”,如果判断条件正确,没有登陆的话显示:“请登陆后操 作!”,已经登陆了显示:“对不起联系方式不能为空或小于8个字符!”于是当晚我手动测试了一下官方,并成功获得了一个管理员的16位MD5的密码。兴奋 的去睡觉,躺在床上却怎么也睡不着:怎么去更简单的利用呢?一边思考,一边入睡,睡着的时候天都亮了。



    来源:https://www.jb51.net/hack/5876.html
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    浏览过的版块

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

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