首页 > 代码库 > Sqli-LABS通关笔录-17-审计SQL注入

Sqli-LABS通关笔录-17-审计SQL注入

这个关卡开始好像进入新的知识区了,前面几个是让我们加深对盲注的印象。接下来又是新知识了!皮卡丘,接招吧!

代码是从SQL-libs的第十七关卡扣的。

页面效果如下所示:

技术分享

PHP面完整CODE如下所示:

 1 <?php 2 include("../sql-connections/sql-connect.php"); 3 error_reporting(0); 4  5 function check_input($value) #定义一个函数为check_input,里面有一个参数为$value。 6     { 7     if(!empty($value))     #当参数不为空的时候 8         { 9         // truncation (see comments)10         $value = http://www.mamicode.com/substr($value,0,15); #参数如果的话执行该条语句,使用substr函数对参数进行截取取从第0位到第15位的数据。11         }12 13         // Stripslashes if magic quotes enabled14         if (get_magic_quotes_gpc()) #判断php.ini是否开启了魔术引用。15             {16             $value =http://www.mamicode.com/ stripslashes($value); #如果开启了对魔术引用进行反转。这个的意思就是不需要去掉魔术引用17             }18 19         // Quote if not a number20         if (!ctype_digit($value)) #ctype_digit:检测是否都是数字,负数及小数都不行,也就是说如果不为数字,为负数或者小数的执行22行代码。21             {22             $value = http://www.mamicode.com/"" . mysql_real_escape_string($value) . ""; #关于mysql_real_escape_string()函数的更多解释:http://www.w3school.com.cn/php/func_mysql_real_escape_string.asp23             }24         25     else26         {27         $value =http://www.mamicode.com/ intval($value); #获取$value的整数28         }29     return $value;30     }31 32 // take the variables33 if(isset($_POST[uname]) && isset($_POST[passwd])) #判断user和passwd有没有设置34 35 {36 //making sure uname is not injectable37 $uname=check_input($_POST[uname]);   #使用check_input函数对传过来的uname参数进行过滤38 39 $passwd=$_POST[passwd]; #过滤的很好,但是密码就没过滤了。问题的关键处出在这里!40 41 42 //logging the connection parameters to a file for analysis.43 $fp=fopen(result.txt,a);44 fwrite($fp,User Name:.$uname."\n");45 fwrite($fp,New Password:.$passwd."\n");46 fclose($fp);47 48 49 // connectivity 50 @$sql="SELECT username, password FROM users WHERE username= $uname LIMIT 0,1";51 52 $result=mysql_query($sql);53 $row = mysql_fetch_array($result);54 //echo $row;55     if($row)56     {57           //echo ‘<font color= "#0000ff">‘;    58         $row1 = $row[username];      59         //echo ‘Your Login name:‘. $row1;60         $update="UPDATE users SET password = ‘$passwd‘ WHERE username=‘$row1‘";61         mysql_query($update);62           echo "<br>";63     64     65     66         if (mysql_error())67         {68             echo <font color= "#FFFF00" font size = 3 >;69             print_r(mysql_error());70             echo "</br></br>";71             echo "</font>";72         }73         else74         {75             echo <font color= "#FFFF00" font size = 3 >;76             //echo " You password has been successfully updated " ;        77             echo "<br>";78             echo "</font>";79         }80     81         echo <img src="http://www.mamicode.com/images/flag1.jpg"   />;    82         //echo ‘Your Password:‘ .$row[‘password‘];83           echo "</font>";84     85 86 87       }88     else  89     {90         echo <font size="4.5" color="#FFFF00">;91         //echo "Bug off you Silly Dumb hacker";92         echo "</br>";93         echo <img src="http://www.mamicode.com/images/slap1.jpg"   />;94     95         echo "</font>";  96     }97 }98 99 ?>

见39行,未对齐进行过滤进而造成SQL注入 

技术分享

 

 

 

THE END


 

Sqli-LABS通关笔录-17-审计SQL注入