zoukankan      html  css  js  c++  java
  • XCTF两个PHP代码审计的笔记

    题目源码如下,考点是输入的$id和$row['id']的区别

    关键在于红框内,可以知道题目的payload是要让$row['id']存在,查询的到数据,并且要让POST的id不能与adog相同。那显而易见,肯定是要你输入的id!==adog,并且需要绕过$row['id']的限制。

    从P牛blog里,学到的一手姿势。自己用mysql FUZZ测试下,从这里可以查看$row['id']和$id的区别

    <?php
    mysql_connect("localhost","root","root");
    mysql_select_db ("test");
    mysql_query("set names utf8");
    for($i = 0 ; $i < 256 ; $i++){
        $c = chr($i);
        $name = mysql_real_escape_string('hehe' . $c);
        $sql = "SELECT * FROM `people` WHERE `name` = '{$name}'";
        $result=mysql_query($sql);$row = mysql_fetch_array($result);
        if ($row['name'] == 'hehe') {
            echo "{$c} <br/>";
        }
    }
    # P牛 bloghttps://www.leavesongs.com/PENETRATION/Mini-XCTF-Writeup.html
    ?>
    #如果在name后面加上一个字符,在mysql里查询,如果查到的和不加这个字符查出来的行相同,则输出。

    我在数据表中插入了这些数据

    也就是说输入的id是adog ,但是在mysql_fetch_array(mysql_query($sql)),查询并且关联数组后,数组内键值为id的数组值仍为adog,所以$row['id']存在,因此绕过了$id==adog,并且还使$row['id']值存在.

    那个fuzz已经充分的证明了。

  • 相关阅读:
    python之各种包
    正则表达式
    import/模块的导入
    迭代器/可迭代对象/生成器
    Day2 列表list
    Day1 字符串格式化
    Day1 字符编码及编码函数
    Python 学习笔记 之 随着学习不断更新的Python特性搜集
    Day1 input&print
    Newtonsoft.Json日期转换
  • 原文地址:https://www.cnblogs.com/BOHB-yunying/p/10685339.html
Copyright © 2011-2022 走看看