SQL注入2

首先点击source,我们来看一下源码:

<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>

挑出来关键的代码块:

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>");
  }

进行分析:


image.png

如果我们能使程序执行这段代码就能得到flag

if (($query[pw]) && (!strcasecmp($pass, $query[pw]))) {
      echo "<p>Logged in! Key: ntcf{**************} </p>";
  }

查询strcasecmp这个函数的意思:

(PHP 4, PHP 5, PHP 7)
strcasecmp ----- 二进制安全比较字符串(不区分大小写)
如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0。

意思很明显了:

我们需要使输入的pass经过md5加密以后的值和执行sql语句查询后的pass值相等

这道题目前面就提醒我们主要考察union查询!!

所以构造payload:


image.png

解析:
1.执行union查询后面语句的条件是前面一部分语句是false,所以这里前面的username写成xxxx,肯定不存在的,返回false
2.'union select md5(233),返回一个经过md5加密后的233
3.#是为了注释sql语句中的那个单引号
4.这里的pass要写跟前面的一样的值233

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题目:简单的sql注入之2 分值:10URL:http://www.shiyanbar.com/ctf/19...
    昨天今天下雨天1阅读 281评论 0 0
  • 对于mysql和Infobright等数据库,information_schema数据库中的表都是只读的,不能进行...
    cybeyond阅读 299评论 0 0
  • 这题目真的坑,一直在试到底过滤了什么,一直无解想起用dirsearch扫一下(每次做不出来就喜欢拿工具扫一扫) 典...
    queena_阅读 785评论 0 0
  • 进去这个题发现也没有源码信息,试了下用户名,别的用户名都说用户名错误,除了admin,当我输入admin' --想...
    牛一喵阅读 1,322评论 0 0
  • 初遇简书 ,真的是及其偶然。记得那天我百度一个词语,有一个简书官网映入眼帘。我首先想到这是一个专门研究古代竹简的网...
    羽筱筱阅读 468评论 0 0

友情链接更多精彩内容