CTF中PHP相关题目考点总结(二)

本文是CTF比赛PHP相关题目的总结,涵盖正则表达式匹配模式、变量覆盖、异常处理、变量名转换、逻辑运算符用法、文件系统操作、命令执行技巧等多个考点。通过实例解析,深入探讨了PHP在安全场景下的运用。
摘要由CSDN通过智能技术生成

image.png

介绍

本篇文章主要总结了我在写ctfshow题目中遇到的关于PHP的考点。因为只总结知识点和考点会比较空洞,也不容易理解,所以我都是通过题目来总结考点,这样的话比较容易理解。

PHP特性相关考点

一、

考点:php正则表达式的匹配模式差异。

例题:

show_source(__FILE__);
include('flag.php');
$a=$_GET['cmd'];
if(preg_match('/^php$/im', $a)){           #/i表示不区分大小写,/m表示多行匹配
    if(preg_match('/^php$/i', $a)){
        echo 'hacker';
    }
    else{
        echo $flag;
    }
}
else{
    echo 'nonononono';
}

例题分析:

字符 ^ 和 $ 同时使用时,表示精确匹配,需要匹配到以php开头和以php结尾的字符串才会返回true,否则返回false
/m 多行匹配模式下,若存在换行\n并且有开始^或结束 符 的 情 况 下 , 将 以 换 行 为 分 隔 符 , 逐 行 进 行 匹 配 。 因 此 当 我 们 传 入 以 下 p a y l o a d 时 , 第 一 个 i f 正 则 匹 配 会 返 回 t r u e 。 但 是 当 不 是 多 行 匹 配 模 式 的 时 候 也 就 是 在 第 二 个 i f 正 则 匹 配 中 出 现 换 行 符 ‘ 符的情况下,将以换行为分隔符,逐行进行匹配。因此当我们传入以下payload时,第一个if正则匹配会返回true。但是当不是多行匹配模式的时候也就是在第二个if正则匹配中出现换行符`%0a`的时, payloadiftrueifcmd的值会被当做两行处理,因此当我们传入以下payload时,第二个if正则表达式匹配到的是aaaphp,不符合以php开头和以php结尾会返回false,从而echo出flag。

payload如下:

?cmd=aaa%0aphp            #%0a为换行符

【相关技术文档】

二、

考点:php变量覆盖。

例题:

<?php
highlight_file(__FILE__);
includ
CTF,SQL注入是一种常见的攻击类型,通常是通过构造恶意输入来绕过应用程序的安全控制,从而访问或篡改应用程序的数据。 以下是一些SQL注入题目的解法: 1. 基于错误的注入:这种类型的注入通常涉及到将错误的输入发送到应用程序,然后观察应用程序返回的错误消息。通过分析错误消息,攻击者可以获得关于数据库的有用信息。例如,攻击者可以尝试通过发送 '和1=2' 的输入来触发一个错误消息。如果返回了一个错误消息,那么攻击者就会知道这个输入是有效的。 2. 基于时间的注入:这种类型的注入利用了数据库查询的延迟响应时间。攻击者可以在输入添加一些额外的SQL语句,这些语句会导致查询的执行时间变长。通过观察查询的响应时间,攻击者可以获得关于数据库的有用信息。 3. 盲注入:这种类型的注入通常是在攻击者无法看到应用程序返回的响应消息时使用的。攻击者可以尝试发送不同类型的输入来推断数据库的数据。例如,攻击者可以尝试使用布尔逻辑来确定某个字段是否存在数据。 4. 堆叠注入:这种类型的注入涉及到在单个输入添加多个SQL语句。攻击者可以利用这些语句来执行多个操作,例如创建新用户、修改密码等。 5. 直接注入:这种类型的注入涉及到直接在SQL查询插入恶意代码。攻击者可以利用这些代码来执行任意操作,例如删除数据库的数据、修改数据库的数据等。 以上是一些常见的SQL注入题目解法,但是在实际的CTF比赛,攻击者需要具备较强的技术水平和经验才能成功地解决这些问题。因此,对于CTF选手而言,不断学习和实践是非常重要的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值