某cms 简单审计 - 图1
    可以看到 不是MVC架构 我们从index.php 看

    某cms 简单审计 - 图2

    开头 包含了一个common.php
    某cms 简单审计 - 图3
    存放的是一些函数
    某cms 简单审计 - 图4
    往下看 第一行 看到他判断了config.php 是判断有没有安装 然后安装了 又包含了一个config.php 文件 是数据库的文件

    1. else require "config.php";

    某cms 简单审计 - 图5
    config.php 就是数据库配置文件

    看到 $cfg的这一行 看他的作用是什么
    $cfg=Dec($cfg);$pre=$cfg[“DB”][“pre”];

    1. function Dec($s,$c=false){
    2. $s=json_decode($s,true);
    3. if(json_last_error())
    4. die('{"msg":"Request JSON Parse Error."}');
    5. return $c?Rpl($s):$s;}

    就是将config.php的数据变为数组。

    继续看index.php
    某cms 简单审计 - 图6
    $m=file_get_contents(“php://input”);
    看到$m 参数 可以获取用户POST提交过来的数据

    某cms 简单审计 - 图7
    dec 函数咱们刚已经看了 就是把传出来的数据 转化为数组
    比如{“abc”:123} 转换成 [“abc”=>123]

    某cms 简单审计 - 图8

    1. if($m["act"]!="index"
    2. &&$m["act"]!="lgn") {
    3. if($m["sid"]!=Qrs(Qry("Select Ak From ".$pre."admin Where Ao=1 And Ai=".$m["nid"]." And ID=".$m["uid"])))die('{"msg":"连接超时!"}');

    当参数名 act 不是index 而且不是lgn 就执行SQL语句

    我们去common.php看一下Qry 参数
    某cms 简单审计 - 图9
    可以看到 他们什么过滤都没有

    这里就等于存在一个SQL注入了
    某cms 简单审计 - 图10

    (select//1//from//(select//sleep(5))x) 即可造成注入 如果你注不出来 尝试把语句echo 出来

    某cms 简单审计 - 图11
    某cms 简单审计 - 图12
    有时候他可能没有数据 或者一些其他全局函数过滤了数据

    往下走 又是一处SQL注入 咱们就不继续测他
    某cms 简单审计 - 图13