sqlilab less11-less18

Posted 每天积累一点点

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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."\\n");
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进行注入测试

 

以上是关于sqlilab less11-less18的主要内容,如果未能解决你的问题,请参考以下文章

sqlilab less23-less27a

sqlilabs(SQL注入)小白通基础通关笔记(专针对小白)(目录)

sqlilabs(SQL注入)小白通基础通关笔记(专针对小白)(目录)

sqlilabs(SQL注入)小白通基础通关笔记(专针对小白)(第五关Less-5)

sqlilabs(SQL注入)小白通基础通关笔记(专针对小白)(第四关Less-4)

sqlilabs(SQL注入)小白通基础通关笔记(专针对小白)(第三关Less-3)