http://4.chinalover.sinaapp.com/web6/index.php

题解:

<html>
<head>
Secure Web Login II
</head>
<body>

<?php
if($_POST[user] && $_POST[pass]) {
   mysql_connect(SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
  mysql_select_db(SAE_MYSQL_DB);
  $user = $_POST[user];
  $pass = md5($_POST[pass]);
  $query = @mysql_fetch_array(mysql_query("select pw from ctf where user='$user'"));
  if (($query[pw]) && (!strcasecmp($pass, $query[pw]))) {
      echo "<p>Logged in! Key: ntcf{**************} </p>";
  }
  else {
    echo("<p>Log in failure!</p>");
  }
}
?>


<form method=post action=index.php>
<input type=text name=user value="Username">
<input type=password name=pass value="Password">
<input type=submit>
</form>
</body>
<a href="index.phps">Source</a>
</html>

1.用post方法输入两个变量

2.输入的变量pass的值经过MD5加密了

3.中存储的是sql命令的结果集

4.如果变量存在,并且,$pass与$query[pw]相等(不区分大小写)

所以我们考虑在$user上加上一个union语句,即向$query的结果集中在加一条,同时能够使得条4成d立的4

注意需要在union前加一个 ' 用于闭合'$uesr'前的那个引号,#是为了注释点后面的那个引号,输入的pass=1对应md5(1),
版本一

版本二