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

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

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__);
include('flag.php');
error_reporting(0);
$error='你还想要flag嘛?';
$suces='既然你想要那给你吧!';
foreach($_GET as $key => $value){
    if($key==='error'){
        die("what are you doing?!");
    }
    $$key=$$value;
}foreach($_POST as $key => $value){
    if($value==='flag'){
        die("what are you doing?!");
    }
    $$key=$$value;
}
if(!($_POST['flag']==$flag)){
    die($error);
}
echo "your are good".$flag."\n";
die($suces);
?>

例题分析:

这里利用的是变量覆盖,关键点在

key=key=

Ctfhub解题 web RCE 阅读详情

相关推荐

CTF题目中遇到的PHP考点总结(一)

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

weixin_68789096的博客 381

反弹shell以及常见的反弹Shell语句原理

什么是反弹shell?原词为reverse shell,含义如下 控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。 其本质就是实现客户端与服务端的互换 反弹shell利用原因 初学时我们不禁有这样的疑问,为什么我们要用反弹shell呢?我们时候利用反弹shell呢?解释如下 为什么要用反弹shell 这里不以CTF举例,以相对更真实一点的渗透过程来举例,比如你作为攻击方,成功向目标处上传了木马文件,可以执行一些语句,我们想获取一个可以直接操作主机的虚拟终端,这个时

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 819

CTF中的PHP特性

文章目录正则表达式元字符模式修正符preg_match()数组绕过换行绕过intval()字符绕过科学计数法进制转换小数点绕过strpos()md5强类型比较弱类型比较md5碰撞file_put_contents()in_array()优先级 本文以ctf.show网站题目为例,总结ctf中的php特性 正则表达式 元字符 模式修正符 preg_match() 数组绕过 preg_match()只能处理字符串,当传入的subject是数组时会返回false if(preg_match("/[0-9]/

qq_45086218的博客 5883

CTF Web刷题|PHP本地文件包含漏洞(LFI)原理与完整解题记录

本次刷题遇到的是 PHP本地文件包含漏洞(LFI),属于CTF Web必考基础漏洞,题型简单但含金量极高,是学习文件包含、理解文件读取逻辑的经典入门题。题目功能:页面通过GET参数动态加载文件,开发者未做路径过滤,导致可以任意读取服务器本地敏感文件。本题没有做路径限制,直接使用 路径穿越符 ../ 即可读取靶场根目录flag。文件包含不仅能读文本,还能执行PHP代码,危害远大于普通文件读取漏洞。2. 过滤路径符:严格替换 ../、./、\ 等穿越字符;• 用户可控文件路径 = 任意文件读取/代码执行漏洞。

L2777276168的博客 250

CTFshow web入门——php特性

Web 89 <?php include("flag.php"); highlight_file(__FILE__); if(isset($_GET['num'])){ $num = $_GET['num']; if(preg_match("/[0-9]/", $num)){ die("no no no!"); } if(intval($num)){ echo $flag; } }

小元砸的博客 7820

php反序列化 先知社区,PHP反序列化的一些例子

之前web一直被PHP反序列化的一些问题困扰,现在痛定思痛,决定好好的总结一番(大佬请略过)一般反序列化能用的例子都是利用了PHP中的一些可以自动调用的特殊函数,类似于C++中的构造函数之类的,不需要其他函数调用即可自动运行。通常称这些函数为魔幻函数,常用的魔幻函数包括construct(),destruct(), sleep(),wakeup(), toString().首先我们以constr...

weixin_29144993的博客 547

关于 CTFphp 考点与绕过那些事的总结

_POST //获取post数据,是一个字典$_GET //获取get数据,是一个字典$_COOKIE //获取cookie数据$_SESSION //获取session数据$_FILES //获取上传的文件$_REQUEST //获取$_GET, $_POST, $_COOKIE中的数据$_SERVER //用户和服务器的基本信息数据库$_ENV //环境数据$GLOBALS //所有全局变量。

Welcome To My6n Blog 4711

CTF:PHP弱类型常见考点总结

PHP弱类型比较是CTF比赛中的常见考点,当使用==进行比较时,类型转换可能导致非预期的结果。如0 == “abc"会返回false,但"0e12345” == "0e67890"会被认为是相等的,因为都被视为科学计数法的0。另外,像true和任何非空字符串比较可能为真,如true == "non-empty string"是true。还有MD5和SHA1的弱碰撞。如两个不同的字符串经过哈希后以0e开头,比较时会视为相等。

ZL_1618的博客 929

CTFphp相关考点

以前在做CTF题的时候总是会遇到一些用php的trick才能过的题,知识点还是很杂的,主要是php这种动态弱类型语言实在是太灵活,各种奇葩写法也多,把之前的知识总结下。 学长的博客有对php黑魔法进行了一些总结,我在此基础上进行拓展 https://skysec.top/2017/07/22/PHP%E5%87%BD%E6%95%B0%E9%BB%91%E9%AD%94%E6%B3%95%E5%B0%8F%E6%80%BB%E7%BB%93/#%E9%BB%91%E9%AD%94%E6%B3%95%E5%A

meteox的博客 2780

网络安全中的python_一文掌握CTF中Python全部考点

前 言一次偶然的机会,让自己成为了一名CTF夺旗小白。从16年开始参与国内大中小型CTF竞赛,曾记得17年之前很少有人把这类竞赛叫做CTF,都是叫网络攻防赛、信息安全赛之类的,目的就是为了通过各种技术手段找到题目最终的key,现在我们都称之为Flag。做为CTF小白用户,这四年跳过的坑真心不少,从最初的“实验吧”等免费的线上模拟平台到省级网络安全技能大赛,再到国内知名的XCTF联赛、DEFCON ...

weixin_39639643的博客 3165

CTFPHP基础学习篇(一)

CTFPHP基础。 文章目录 前言 一、PHP是什么? 、配置PHP环境 三、PHP基础语法介绍 前言 估摸着不少学计算机的同学以及其他专业的小部分同学都对于信息安全感兴趣吧!那对于参加这相关的比赛就应该更有兴趣了。那么我们首先就了解一下下这相关的比赛——CTF(Capture The Flag)。

ioik~hk的博客 1万+

CTF 题目信息收集

CTF 题目信息收集信息收集分类敏感目录泄露git泄露 信息收集 在线上CTF比赛Web题目中,信息收集涵盖的面非常广,同时非常重要。 分类 敏感目录泄露 通过泄露的敏感目录,可以获取网站的源代码和敏感的URL地址,如后台地址等。 git泄露 漏洞简介: git是一个主流的分布式版本控制系统,在开发过程中,可能会遗忘.git文件夹。从而导致提交过的所有代码被泄露。 漏洞危害: 若文件中包含有敏感信息,如站点源码、数据库账户密码等,攻击者可直接控制服务器。 .git文件夹分析: // 文件夹 hook

Senimo 2521

ctf题目复盘

为了准备四月下旬的校赛, 豁出去了 2048 首先进去之后是这样一个界面 2048是我喜欢的一个游戏, 然后我女朋友把它玩到了2048, 却啥也没出现。。 网站做的很流畅, 但是我一点思路都没有 开始抓包 GTE请求 发现了一个ETag的东西, 怎么把其下载下来呢? response响应 怎么把它下载下来呢? ... 扫描后...

萍水间人的小天地 3582

CTF-Web——XCTF难度1题目考点总结

1、unserialize() ——反序列化2、__wakeup()——反序列化自动调用序列化的时候,当属性的个数不等于属性的值的个数的时候,__wakeup不会执行3、__construct()——构建对象的时被调用,反序列化时不会调用该方法4、__destruct()——明确销毁对象或脚本结束时被调用;5、preg_match_all()——执行一个全局正则表达式匹配。6、call_user_func_array()——调用回调函数,并把一个数组参数作为回调函数的参数。

2301_79090248的博客 1238
上一篇: CTF题目中遇到的PHP考点总结(一)
下一篇: 【网络安全】一款针对Flutter的逆向工程分析工具
IT老涵
博客等级 码龄5年 4555粉丝 · 414原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值