zoukankan      html  css  js  c++  java
  • 程序逻辑问题

    emmmmm,打了国赛,打了南理工校赛,都自闭了,反序列化用指针引用的,后期弄懂了,再放笔记,南理工校赛有些题目有点脑洞,web不是纯ctf题目,结合了CVE漏洞来作为考点,没有hint估计只能做出一道题,还一个PHPLFI+tomact任意文件上传漏洞就是做不出来。还是回归正常的学习,并且这几天陆续会出DDCTF,国赛,南理工校赛的WEB笔记.

    进入题目链接:

    源码如下:

    <html>
    <head>
    welcome to simplexue
    </head>
    <body>
    <?php
    
    
    if($_POST[user] && $_POST[pass]) {
        $conn = mysql_connect("********, "*****", "********");
        mysql_select_db("phpformysql") or die("Could not select database");
        if ($conn->connect_error) {
            die("Connection failed: " . mysql_error($conn));
    } 
    $user = $_POST[user];
    $pass = md5($_POST[pass]);
    
    $sql = "select pw from php where user='$user'";
    $query = mysql_query($sql);
    if (!$query) {
        printf("Error: %s
    ", mysql_error($conn));
        exit();
    }
    $row = mysql_fetch_array($query, MYSQL_ASSOC);
    //echo $row["pw"];
      
      if (($row[pw]) && (!strcasecmp($pass, $row[pw]))) {
        echo "<p>Logged in! Key:************** </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.txt">
    </html>

    然后最重要的在于

    select pw from php where user='$user'和if (($row[pw]) && (!strcasecmp($pass, $row[pw])))
    明显是存在sql注入漏洞的,但是是分开判断的。
    具体的就是传入两个参数,先查询php表中pw字段where user='xxxx'然后返回的一行数据中的pw字段的数据要与传入的md5加密的pass参数值一样,才能get flag。
    呢么如果我们让查询的语句,利用联合查询语句,直接返回值,呢么row[pw]就是我们传入的值。那么来试一下。
    自己手动来试试看:




    payload=user=-1' union select md5(1)#&pass=1 成功返回flag



  • 相关阅读:
    Mysql多个字段同时满足多组条件
    spring-boot 配置Druid监控
    回顾存储过程简单使用
    win10环境下使用docker部署spring-boot项目
    LeetCode 35. 搜索插入位置
    二分查找
    归并排序(二)
    归并排序
    剑指 Offer 68
    剑指 Offer 68
  • 原文地址:https://www.cnblogs.com/BOHB-yunying/p/10753503.html
Copyright © 2011-2022 走看看