zoukankan      html  css  js  c++  java
  • 审计7 水平越权

     1 <?php
     2 include_once('../sys/config.php');
     3 if (isset($_POST['submit']) && !empty($_POST['username']) ) {
     4 
     5     if (strlen($_POST['username'])>16) {
     6         $_SESSION['error_info'] = '用户名過長(用戶名長度<=16)';
     7         header('Location: edit.php');
     8         exit;
     9     }
    10 
    11     $clean_username = clean_input($_POST['username']);
    12     $clean_user_id = clean_input($_POST['id']);
    13     
    14     //判断用户名已是否存在
    15     $query = "SELECT * FROM users WHERE user_name = '$clean_username'";
    16     $data = mysql_query($query, $conn);
    17     if (mysql_num_rows($data) == 1) {
    18         $_SESSION['error_info'] = '用户名已存在';
    19         header('Location: edit.php');
    20         exit;
    21     }
    22     
    23     $query = "UPDATE users SET user_name = '$clean_username' WHERE user_id = '$clean_user_id'";
    24     mysql_query($query, $conn) or die("update error!");
    25     mysql_close($conn);
    26     //刷新缓存
    27     $_SESSION['username'] = $clean_username;
    28     header('Location: edit.php');
    29 }
    30 else {
    31     not_find($_SERVER['PHP_SELF']);
    32 }
    33 ?>

    首先在./user/edit.php中看见名字为

    搜索关键字  username 找到  ../sys/config.php  在11行和12行直接把user 和 id 读出来直接赋值带入数据库

    而且没有做任何的过滤

    在23行$query = "UPDATE users SET user_name = '$clean_username' WHERE user_id = '$clean_user_id'";

    发现他直接可以更新用户的用户名,而且用户id可控,也就是说可以修改任意id的用户名,并且查询用户资料。

    构造pyload:

    首先 需要三个参数   $_POST['submit']    $_POST['username']   $_POST['id']

    post 给updateName.php

    首先观察到用户  id为10的用户名字为shuaibi

    我目前的用户为root   id为8

    submit的值可以为任意数,只要设定了就好

    构造post参数  越权修改id为10的用户名字

    可以发现此时我已经以hankbay的身份登录

    查看数据库:

    id为10的用户姓名已被我修改。

    修复:需要在

    user_id = '$clean_user_id'";的地方修改为在ssion里去取,而不是直接post去取
  • 相关阅读:
    如何解决Unsupported major.minor version 52.0问题?
    无法将 Ethernet0 连接到虚拟网络”VMnet0″ 详细信息可以在 vmware.log 文件中找到未能连接虚拟机Ethernet0
    安卓逆向入门教程(一)
    go数据类型 slice map
    Tomcat服务配置及性能优化
    RabbitMQ消息可靠性投递
    LevelDb引擎
    【前端】Vue.js前端框架
    【PHP】PHP 微服务协程框架Swoft
    Supervisor进程管理工具
  • 原文地址:https://www.cnblogs.com/pojun/p/7360447.html
Copyright © 2011-2022 走看看