未授权访问的缺陷原理的一种可能性

  好久没写文章了,水一篇。

    我们挖掘漏洞有时候发现改参数就导致未授权跳步骤了。

    比如修改密码 step=1 step=2 step=3 step=4

    我们可以直接step=3/4直接修改用户密码

    比如签约金融合同等,未认证用户可以未授权签约或者是垂直越权如userId=1111111 ->userId=1 管理员账号

    导致这些问题的一个原因:

     

$action = $_GET['do'];
$r=$db->query("select role".((int)$action)." from users where id=".((int)$_SESSION['user_id']));
if($row=$r->fetchArray()){
        if((int)$row[0]!==1){
                die('permission denied');
        }else{
                doAction($action);
        }
}

  表结构

  role0  text

  role1 manager

  role2 admin  

  不能sql注入但是可以

  type=1  ->manager

  type=2 ->admin

  简单记录下。

原文地址:https://www.cnblogs.com/piaomiaohongchen/p/11724293.html