首页 > 代码库 > 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注入
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。