实验吧-Once More

本文详细解析了CTF比赛中的OnceMore挑战题目,通过审计PHP源码,揭示了密码验证逻辑漏洞,利用科学计数法和%00截断技巧成功获取flag。关键在于理解正则表达式和字符串处理函数的误判条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Once More

原题链接

http://ctf5.shiyanbar.com/web/more.php

分析

审计源码

<?php
if (isset ($_GET['password'])) {
    if (ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE)
    {
        echo '<p>You password must be alphanumeric</p>';
    }
    else if (strlen($_GET['password']) < 8 && $_GET['password'] > 9999999)
    {
        if (strpos ($_GET['password'], '*-*') !== FALSE)
        {
            die('Flag: ' . $flag);
        }
        else
        {
            echo('<p>*-* have not been found</p>');
        }
    }
    else
    {
        echo '<p>Invalid password</p>';
    }
}
?>

password有几个要求

  1. 必须是数字及字母组成
  2. 长度小于8
  3. 值大于999999
  4. 要包含 *-*

包含的*-*可以放在%00后面,%00截断,>999999可以用科学计数法。
EZ:

password=9e9%00*-*

flag

CTF{Ch3ck_anD_Ch3ck}

知识点

php简单审计,科学记数法,%00截断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值