CTFshow web(php命令执行 68-71)

web68

还是那句话,没看到flag在哪,那就优先找到flag位置

这里c=var_dump(scandir("/"));

直接输出根目录的位置,然后查看源代码,发现flag位置为flag.txt

知道flag在根目录下面的flag.txt直接访问就好了

c=include('/flag.txt');

web69

payload:c=include('/flag.txt');

上题payload没有禁用,直接白嫖!

web70

payload:c=include('/flag.txt');

上题payload没有禁用,直接白嫖!

web71

首先拿到一串代码

复制代码
<?php

/*
# -*- coding: utf-8 -*-
# @Author: Lazzaro
# @Date:   2020-09-05 20:49:30
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-07 22:02:47
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/

error_reporting(0);
ini_set('display_errors', 0);
// 你们在炫技吗?
if(isset($_POST['c'])){
        $c= $_POST['c'];
        eval($c);
        $s = ob_get_contents();
        ob_end_clean();
        echo preg_replace("/[0-9]|[a-z]/i","?",$s);
}else{
    highlight_file(__FILE__);
}

?>

代码审计:

  • 使用 ob_get_contents() 和 ob_end_clean() 函数获取并清除输出缓冲区中的内容。这是为了捕获执行命令后的结果,并将其传递给 preg_replace() 函数进行处理。

  • 使用 preg_replace("/[0-9]|[a-z]/i","?",$s) 将输出结果中的数字和小写字母替换为 ?,然后将结果进行输出。

ps:害怕小白不懂,解释下。缓冲区(Buffer)是计算机系统中的一块内存区域,用于临时存储数据。它可以在数据传输之间起到缓冲和调节作用,以提高数据传输的效率或解决传输速度不匹配的问题。

先把上题payload看看能不能白嫖啊

c=include('/flag.txt');

好小子,看来你是要上天啊!

根据代码审计结果,既然会把输出结果中的数字和小写字母替换为 ?

那不用缓冲区不就好了!

最后加一个exit();

c=include('/flag.txt');exit();

真诚希望我的文章能够帮助大家,谢谢!过年写下这篇文章总觉得还得加上一句:

祝愿大家龙年吉祥!

相关推荐
damoluomu4 天前
挑 PHP CMS 之前,先学会看它的协议
php
云水一下4 天前
零基础玩转bWAPP靶场(七十一):Slow HTTP DoS(慢速HTTP拒绝服务)
web安全·bwapp·slowhttptest
小羊没烦恼!4 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
伞伞悦读4 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
C语言小火车4 天前
C/C++ 为什么需要编译器?
开发语言·c++
霍霍的袁4 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超4 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int4 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++
CoderYanger4 天前
A.每日一题:835. 图像重叠
java·开发语言·程序人生·leetcode·面试·职场和发展·学习方法
伞伞悦读4 天前
【第37期】Python JSON 与配置详解:序列化、反序列化、嵌套结构和配置文件
开发语言·python·json