CTF-WEB-各种绕过哟

首页启动场景打开链接

<?php

highlight_file('flag.php');//高亮显示flag.php文件

$_GET['id'] = urldecode($_GET['id']);//对传入的id进行url解码

$flag = 'flag{xxxxxxxxxxxxxxxxxx}';

if (isset($_GET['uname']) and isset($_POST['passwd'])) {//判断uname和passwd参数是否传入

    if ($_GET['uname'] == $_POST['passwd'])

        print 'passwd can not be uname.';//uname和passwd的值不能相同

    else if (sha1($_GET['uname']) === sha1($_POST['passwd'])&($_GET['id']=='margin'))

//将传入的uname和passwd进行sha编码后进行比较

        die('Flag: '.$flag);//满足if条件,得到flag
    else
        print 'sorry!';

}

?>

要通过get传入uname和id参数,通过pose传入passwd,最重要的是uname的sha1和值与passwd的sha1的值相等即可,但是同时他们两个的值又不能相等,构造数组就可以

构造:?uname[]=1&id=margin,在用hackbar传入passwd[]=2

得到flag

flag{3c7bd4aaee61c35a33786bbd8d4ed6ce}

### 解题思路与分析 CTFShow Web18 是一道典型的 PHP 字符串比较绕过题,其核心机制依赖于 PHP 中松散比较(`==`)的类型转换特性。题目通常会设置一个条件判断,例如要求用户输入的值与特定字符串相等,但通过构造特殊输入可以绕过该判断。 在 PHP 中,当使用 `==` 进行比较时,如果其中一个操作数是数字或以数字开头的字符串,则 PHP 会尝试将其转换为数字进行比较。例如,字符串 `0e123456` 会被转换为浮点数 `0`,从而在与数字 `0` 或其他以 `0e` 开头的字符串比较时被视为“相等”。 在 Web18 题目中,若服务器端判断逻辑类似 `$_GET['key'] == '0e123456'`,则可以构造 `key=0` 或 `key=0e123456789`,利用 PHP 的类型转换机制使条件成立,从而获取 flag[^1]。 ### 示例代码与利用方式 假设题目源码如下: ```php if ($_GET['key'] == '0e123456') { echo $flag; } ``` 由于 PHP 的松散比较机制,以下输入均能绕过判断: - `?key=0` - `?key=0e123456789` PHP 会将这些值转换为浮点数 `0`,从而与 `'0e123456'` 转换后的结果相等,触发 flag 输出。 ### 技术细节与扩展 - **松散比较与严格比较**:PHP 中 `==` 为松散比较,允许类型转换;而 `===` 为严格比较,要求类型与值均相同。CTF 题目中若使用 `==`,则可能被构造输入绕过- **MD5 哈希绕过**:在类似题目中,若输入经过 MD5 哈希后进行比较,可利用某些字符串的 MD5 值以 `0e` 开头,从而在比较中被误判为“相等”。 - **数组绕过**:部分题目允许通过传递数组参数绕过判断,例如 `?key[]=123`,但 Web18 通常不涉及此方式。 ### 实际操作步骤 1. 构造 GET 请求,输入 `?key=0e123456789`。 2. 提交后若条件成立,页面将输出 flag。 3. 若题目使用 MD5 哈希机制,可查找以 `0e` 开头的 MD5 值,构造对应输入。 ```php // 示例:MD5 哈希绕过 if(md5($_GET['pass']) == '0e215962017') { echo $flag; } ``` 可使用已知的 MD5 哈希碰撞值如 `s878926199a`,其 MD5 值为 `0e545993274517701592006694417082`,满足条件。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值