首页 > 其他分享 >[鹤城杯 2021]EasyP

[鹤城杯 2021]EasyP

时间:2023-08-02 23:39:20浏览次数:37  
标签:鹤城 语句 EasyP show utils source 2021 POST php

[鹤城杯 2021]EasyP

题目来源:nssctf

题目类型:web

涉及考点:正则绕过

1. 还是先做代码审计

<?php
include 'utils.php';

if (isset($_POST['guess'])) {
    $guess = (string) $_POST['guess'];
    if ($guess === $secret) {
        $message = 'Congratulations! The flag is: ' . $flag;
    } else {
        $message = 'Wrong. Try Again';
    }
}

if (preg_match('/utils\.php\/*$/i', $_SERVER['PHP_SELF'])) {
    exit("hacker :)");
}

if (preg_match('/show_source/', $_SERVER['REQUEST_URI'])){
    exit("hacker :)");
}

if (isset($_GET['show_source'])) {
    highlight_file(basename($_SERVER['PHP_SELF']));
    exit();
}else{
    show_source(__FILE__);
}
?> 

这题出现了挺多没见过的东西,还是先介绍一下:

$_SERVER[...]:是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等信息的数组。根据中括号内传入的参数不同,返回不同的信息,下面是题目涉及的两个参数:

'PHP_SELF':返回当前执行脚本的文件名。例如:在地址为http://example.com/foo/bar.php的脚本中使用 $_SERVER['PHP_SELF'] 将得到 /foo/bar.php

'REQUEST_URI':取得当前URL的路径地址,感觉跟上面那个没啥区别

basename():返回路径中的文件名部分

接着我们看代码:

第一个if语句,当POST传入的参数$guest等于$secret时返回flag,但这里不知道$secret是啥,先不管

第二个if语句,检查当前执行脚本的文件名,从后往前若找到utils.php则过滤掉

模式分隔符后的"i"标记这是一个大小写不敏感的搜索

第三个if语句,检查当前URL的路径地址,若出现show_source则过滤掉

第四个if语句,检查show_source是否有定义

综上,我们先忽略POST传参,其次我们需要GET传入show_source,使得路径包含我们需要查看的文件,利用文件包含highlight_file使得页面回显php代码,即题目提示的utils.php

2. 构造payload

  • 先明确我们需要构造的结构:
/utils.php/?show_source=1

这里show_source随便定义即可

  • 接着一个个过滤,先考虑第二个if语句,我们在utils.php后面加一个非ascii字符即可(因为是从后往前找,遇到非ascii字符就停了):
/utils.php/哈哈?show_source=1
  • 再看第三个if语句,记住以下特性即可:

GET或POST方式传进去的变量名,会自动将空格 + . [转换为_

所以这里我们传入show[source先通过第三个if,在第四个if中GET传参的时候会转换回_

/utils.php/哈哈?show[source=1
  • 第四个if就不用管了,定义了show_source即可

但是传入上述payload没回显,看其他师傅的wp说前面得加上index.php,我也不知道为啥,总之最后payload如下:

/index.php/utils.php/哈哈?show[source=1

得到flag:

NSSCTF{0087c05c-80fd-47cb-b7c6-74c71fae9165}

第一个POST传参也确实是个坑吧,用来迷惑的

日期:2023.8.2

作者:y0Zero

标签:鹤城,语句,EasyP,show,utils,source,2021,POST,php
From: https://www.cnblogs.com/bkofyZ/p/17602087.html

相关文章

  • 【专题】2015-2021年医疗机器人价值报告PDF合集分享(附原数据表)
    报告链接:http://tecdat.cn/?p=31419随着大量企业的涌入,服务机器人产业化即将到来。 阅读原文,获取专题报告合集全文,解锁文末40份服务机器人行业相关报告。经过多年的发展,我国已经实现了完整的服务机器人产业生态系统。在常态化疫情防控、人口老龄化、技术进步和政策支持等多种因......
  • 2021年互联网域名产业报告——从DoH到ODoH
    2021年互联网域名产业报告——从DoH到ODoH业务挑战域名解析加密技术成为应对域名劫持、记录篡改和用户隐私泄露,实现流量精准调度、提升用户体验的可行措施之一。互联网工程任务组(IETF)公布的DoH/DoT技术标准,提供了用户端与解析服务器端之间域名解析流量安全和隐私机制,在全球范围内......
  • 题解 P9406【[POI2020-2021R3] Nawiasowania】
    一个显然的思路是:在排列\(p\)的括号串合法的基础上,使得左括号在原括号串中尽量靠左,这样答案更有可能合法。于是我们求出这个原括号尽量靠左的括号串(下文称为“最优括号串”),然后check合法性即可。下文中\(s\)是排列\(p\)的括号串。当\(n=2\)时,唯一的填法是令\(s_1\get......
  • 恶意软件加密通信——2021年的报告,比较新
    NearlyhalfofmalwarenowuseTLStoconcealcommunicationsAsmoreoftheInternetusesTransportLayerSecurity,analysisofdetectiontelemetryshowsthevolumeofTLSencryptedcommunicationsbymalwarehasdoubledinayear.Writtenby SeanGallagherA......
  • [Ynoi Easy Round 2021] TEST_152(颜色段数均摊+扫描线)
    题目传送门solution简单题,考虑正着做扫描线,维护最后一次覆盖每个位置的修改时间,这个可以用\(set\)维护颜色段数均摊。那么显然对于一个以当前位置为右端点的询问,其答案就是所有最后修改时间大于等于左端点的位置的数的和。开一个树状数组维护最后一次修改时间是\(i\)的位......
  • LiveVideoStack公众号2021年终盘点
    在2021年伊始,我们翻译过TsahiLevent-Levi关于今年WebRTC流行趋势的文章,文中提到2021年将是“还债”的一年,此前所进行的系统设计、软件架构或软件开发都将迎来最终结果;同时它也将是服务及传输质量不断优化的一年。在供给侧长期大于需求侧的当下,技术迭代的速度远远甩开新需求增长的......
  • CSP2021 游记
    前言这个人是蒟蒻,初二,在机房属于是垫底。今年是第一次参加CSP-S,第二次参加CSP-J。Day-1颓。Day0学校搞运动会,上午一边看运动会,一边复(摸)习(鱼)。中午\(1:00\)出发,在车上又看了会儿算法。全车的人都在颓。回了酒店后继续颓,感觉明天要凉。Day1早晨\(6:30\)起床,吃早饭......
  • [SWPUCTF 2021 新生赛]ez_unserialize
    [SWPUCTF2021新生赛]ez_unserialize题目来源:nssctf题目类型:web涉及考点:PHP反序列化1.检查一下源代码,发现Disallow:猜测大概有robots.txt,扫下后台看看:额,flag.php都扫出来了,但是进不去,还是老老实实看robots吧:2.看到题目了,开始代码审计<?phperror_reporting(0);show_......
  • LOJ3677 「北大集训 2021」出题高手
    卡死人了。数据随机写在上面,就是让你预估一下区间长度不会太长的,数据里最长的不超过\(2000\)。暴力扫\(2000\)个显然过不了\(500000\)的点,但是\(500000\)的点\(m\)为\(1\)且必定询问整个序列。可以分析出,在随机情况下,前缀和最小最大数量是根号个的,平方后是四次根号级......
  • 如何隐藏开源流媒体EasyPlayer.js视频H.265播放器的实时录像按钮?
    目前我们TSINGSEE青犀视频所有的视频监控平台,集成的都是EasyPlayer.js版播放器,它属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,包括WebSocket-FLV、HTTP-FLV,HLS(m3u8)、WebRTC等,支持全平台、全终端播放,如Windows、Linux、Android、iOS,支持H.264与H.265编码......