zoukankan      html  css  js  c++  java
  • sqlilab less11-less18

    less-11

    uname和passwd直接带入查询,万能密码

     sqlmap自动搜索表单,或者抓包后用-r参数


    less-12

    post数据用小括号进行包裹,构造万能密码") or 1=1 #


    less-13

    将mysql_error()返回前端,且用‘)包裹,构造') or 1=1 #


    less-14

    post的数据用双引号包裹,构造万能密码"or 1=1 #


    less-15

    报错不返回前端,考虑布尔和时间盲注

     

     


    less-16

    与15思路相同,但是由小括号,双引号包裹

     

     


    less17

    这里是更新用户的密码。

    加入了过滤函数,只将uname带入查询,并对uname进行处理

     1 function check_input($value)
     2     {
     3     if(!empty($value))   //不能为空
     4         {
     5         // truncation (see comments)
     6         $value = substr($value,0,15);   //只获取前15位字符串
     7         }
     8 
     9         // Stripslashes if magic quotes enabled
    10         if (get_magic_quotes_gpc())  如果开启了gpc
    11             {
    12             $value = stripslashes($value);  用这个函数处理
    13             }
    14 
    15         // Quote if not a number
    16         if (!ctype_digit($value))如果不是数字的话,对特殊字符进行转义,并包裹单引号
    17             {
    18             $value = "'" . mysql_real_escape_string($value) . "'";
    19             }
    20         
    21     else
    22         {
    23         $value = intval($value);
    24         }
    25     return $value;
    26     }

    但是,防御函数只处理了uname变量,并未对passwd处理。

     


    less-18

    这里提示了IP,可能是xxf注入

     通过分析源码,这里对uname和passwd参数进行了处理,但是还有两个新的全局变量可控,ip和user-agent

     1 function check_input($value)
     2     {
     3     if(!empty($value))
     4         {
     5         // truncation (see comments)
     6         $value = substr($value,0,20);
     7         }
     8 
     9         // Stripslashes if magic quotes enabled
    10         if (get_magic_quotes_gpc())
    11             {
    12             $value = stripslashes($value);
    13             }
    14 
    15         // Quote if not a number
    16         if (!ctype_digit($value))
    17             {
    18             $value = "'" . mysql_real_escape_string($value) . "'";
    19             }
    20         
    21     else
    22         {
    23         $value = intval($value);
    24         }
    25     return $value;
    26     }
    27 
    28 
    29 
    30     $uagent = $_SERVER['HTTP_USER_AGENT'];
    31     $IP = $_SERVER['REMOTE_ADDR'];
    32     echo "<br>";
    33     echo 'Your IP ADDRESS is: ' .$IP;
    34     echo "<br>";
    35     //echo 'Your User Agent is: ' .$uagent;
    36 // take the variables
    37 if(isset($_POST['uname']) && isset($_POST['passwd']))
    38 
    39     {
    40     $uname = check_input($_POST['uname']);
    41     $passwd = check_input($_POST['passwd']);
    42     
    43     /*
    44     echo 'Your Your User name:'. $uname;
    45     echo "<br>";
    46     echo 'Your Password:'. $passwd;
    47     echo "<br>";
    48     echo 'Your User Agent String:'. $uagent;
    49     echo "<br>";
    50     echo 'Your User Agent String:'. $IP;
    51     */
    52 
    53     //logging the connection parameters to a file for analysis.    
    54     $fp=fopen('result.txt','a');
    55     fwrite($fp,'User Agent:'.$uname."
    ");
    56     
    57     fclose($fp);
    58     
    59     
    60     
    61     $sql="SELECT  users.username, users.password FROM users WHERE users.username=$uname and users.password=$passwd ORDER BY users.id DESC LIMIT 0,1";
    62     $result1 = mysql_query($sql);
    63     $row1 = mysql_fetch_array($result1);
    64         if($row1)
    65             {
    66             echo '<font color= "#FFFF00" font size = 3 >';
    67             $insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)";
    68             mysql_query($insert);
    69             //echo 'Your IP ADDRESS is: ' .$IP;
    70             echo "</font>";
    71             //echo "<br>";
    72             echo '<font color= "#0000ff" font size = 3 >';            
    73             echo 'Your User Agent is: ' .$uagent;
    74             echo "</font>";
    75             echo "<br>";
    76             print_r(mysql_error());            
    77             echo "<br><br>";
    78             echo '<img src="../images/flag.jpg"  />';
    79             echo "<br>";
    80             
    81             }
    82         else
    83             {
    84             echo '<font color= "#0000ff" font size="3">';
    85             //echo "Try again looser";
    86             print_r(mysql_error());
    87             echo "</br>";            
    88             echo "</br>";
    89             echo '<img src="../images/slap.jpg"   />';    
    90             echo "</font>";  
    91             }
    92 
    93     }

    当–level参数设定为3或者是3以上时,会尝试对User-Agent进行注入测试

  • 相关阅读:
    PHP 创建二叉树镜像(交换左右子树)
    PHP 使用二叉树的先序和中序遍历结果构造二叉树
    PHP 不用求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
    PHP 不用加减乘除做加法
    PHP 跳台阶问题
    PHP 输入一个整数,求该整数的二进制表达中有多少个1
    PHP 输入两个整数n 和m,从数列1,2,3.......n 中随意取几个数, 使其和等于m ,要求将其中所有的可能组合列出来
    PHP 查找链表倒数第i个节点
    .Net/C# 实现: FlashFXP 地址簿中站点密码的加解密算法
    johnsuna 的收藏精品
  • 原文地址:https://www.cnblogs.com/hongren/p/13396745.html
Copyright © 2011-2022 走看看